我有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)?
答案 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