2013-05-01 97 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