如何强制表具有相同的尺寸?

时间:2014-08-11 14:40:17

标签: r

如何在 R 中强制表格的尺寸相等?

例如:

a <- c(0,1,2,3,4,5,1,3,4,5,3,4,5)
b <- c(1,2,3,3,3,3,3,3,3,3,5,5,6)
c <- table(a,b)

print(c)
#   b
#a   1 2 3 5 6
#  0 1 0 0 0 0
#  1 0 1 1 0 0
#  2 0 0 1 0 0
#  3 0 0 2 1 0
#  4 0 0 2 1 0
#  5 0 0 2 0 1

但是,我正在寻找以下结果:

print(c)
#   b
#a   0 1 2 3 4 5 6
#  0 0 1 0 0 0 0 0
#  1 0 0 1 1 0 0 0
#  2 0 0 0 1 0 0 0
#  3 0 0 0 2 0 1 0
#  4 0 0 0 2 0 1 0
#  5 0 0 0 2 0 0 1
#  6 0 0 0 0 0 0 0

1 个答案:

答案 0 :(得分:5)

使用因素。除非您以某种方式说明变量,否则table不知道变量的级别!

a <- c(0,1,2,3,4,5,1,3,4,5,3,4,5)
b <- c(1,2,3,3,3,3,3,3,3,3,5,5,6)

a <- factor(a, levels = 0:6)
b <- factor(b, levels = 0:6)
table(a,b)
#   b
#a   0 1 2 3 4 5 6
#  0 0 1 0 0 0 0 0
#  1 0 0 1 1 0 0 0
#  2 0 0 0 1 0 0 0
#  3 0 0 0 2 0 1 0
#  4 0 0 0 2 0 1 0
#  5 0 0 0 2 0 0 1
#  6 0 0 0 0 0 0 0

编辑强制进行方形交叉制表的一般方法是执行类似

的操作
x <- factor(a, levels = union(a, b))
y <- factor(b, levels = union(a, b))
table(x, y)