2014-11-06 56 views
2

我有2个载体:填补了一个表中的R

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

也[**这**](http://stackoverflow.com/questions/19773435/how-can-见你的力量包含在一个表中的水平/ 19773510#19773510)或[**这**](http://stackoverflow.com/questions/1617061/including-absent - 值功能于表成果在-R/1617150#1617150)。 – Henrik 2014-11-06 14:48:22

回答

4

所以R不知道有缺失的值。说服它的最简单方法是指定factorlevels包含缺失的元素。

例如

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

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

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

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

如果您忽略“0”标头,那么您几乎可以进行任何矢量操作。但是,如果你想彻底删除标题,您可以转换成原始数字阵列

> as.numeric(a) 
[1] 2 2 2 0 0 1 0 
+0

我认为OP需要对应于'c1'的级别,而不是手动设置它们 – 2014-11-06 14:23:02

2

使用factor,为了设定与c1

table(factor(c2, levels = sort(unique(c1)))) 
# 0 1 2 3 4 5 6 
# 2 2 2 0 0 1 0 

或者使用union(如@Svens删除答复中提到)

table(factor(c2, levels = sort(union(c1, c2)))) 
# 0 1 2 3 4 5 6 
# 2 2 2 0 0 1 0 
空项合格 c1唯一值的 c2 levels

为了得到实际使用价值,请使用as.numeric

as.numeric(table(factor(c2, levels = sort(unique(c1))))) 
## [1] 2 2 2 0 0 1 0