在R中填写一张桌子

时间:2014-11-06 14:15:32

标签: r vector

我有2个载体:

c1 <- c(1,2,0,1,3,4,5,6,1,2,3,0)
c2 <- c(1,2,0,5,0,2,1)

> table(c1)   
c1   
0 1 2 3 4 5 6   
2 3 2 2 1 1 1   
> table(c2)  
c2  
0 1 2 5   
2 2 2 1  

现在我希望c2具有以下形式:

> table(c2)  
c2  
0 1 2 3 4 5 6   
2 2 2 0 0 1 0

如何从这些表中取出向量(2,3,2,2,1,1,1)和(2,2,2,0,0,1,0)?

2 个答案:

答案 0 :(得分:4)

所以R不知道缺少值。说服它的最简单方法是指定levels的{​​{1}}包含缺少的元素。

例如

factor

对于这个问题的第二部分,通常表格本身就足以满足大多数目的。

> table(factor(c2, levels=0:6))

0 1 2 3 4 5 6
2 2 2 0 0 1 0

如果忽略“0”标题,那么几乎可以进行任何矢量操作。但是如果要完全删除标题,可以转换为原始数字数组

> a <- table(factor(c2, levels=0:6))
> a[1] + 1
0
3

答案 1 :(得分:2)

使用factor并将c1的唯一值传递给levels的{​​{1}},以便设置与c2值相对应的空条目

c1

或使用table(factor(c2, levels = sort(unique(c1)))) # 0 1 2 3 4 5 6 # 2 2 2 0 0 1 0 (如@Svens删除的答案中所述)

union

为了获得实际值,请使用table(factor(c2, levels = sort(union(c1, c2)))) # 0 1 2 3 4 5 6 # 2 2 2 0 0 1 0

as.numeric