2013-05-01 94 views
2

鑑於這種樣本數據:添加缺少的列的R表

x = 1:12; names(x) = LETTERS[1:length(x)] 
y = c('A','C','E','F','J','E','K','L','E','L','F','A','E') 

當我做table(y)我得到:

A C E F J K L 
2 1 4 2 1 1 2 

如何展開,包括所有其他列零個條目標題在x?換句話說,我後的輸出是:

A C E F J K L B D G H I 
2 1 4 2 1 1 2 0 0 0 0 0 

(未分類如圖中所示,或排序,我不介意。)

回答

10

使用發ctor:

table(factor(y, levels = names(x))) 
# A B C D E F G H I J K L 
# 2 0 1 0 4 2 0 0 0 1 1 2 
5

我不能想辦法一起做table,但是這是一個非常簡單的一行不顧:

sapply(names(x), function(name) {sum(y == name)}) 

輸出:

A B C D E F G H I J K L 
2 0 1 0 4 2 0 0 0 1 1 2 
+0

謝謝!因爲它最好的回答了問題,但我最終回答了這個問題,因爲我需要一個命名向量而不是'table',而'as.vector(mytable)'似乎失去了名字)。 – 2013-05-01 05:46:41

+1

@DarrenCook,你可以做'c(mytable)'來轉換爲一個整數向量並保存名稱。 – flodel 2013-05-01 12:22:37