3

有没有办法强制 R 的table函数包含行或列,即使它们从未出现在数据中?例如,

data.1 <- c(1, 2, 1, 2, 1, 2, 4)
data.2 <- c(1, 4, 3, 3, 3, 1, 1)

table(data.1, data.2)

返回

      data.2
data.1  1 3 4
      1 1 2 0
      2 1 1 1
      4 1 0 0

其中行中缺少 3,列中缺少 2,因为它们没有出现在数据中。

有没有一种简单的方法可以强制将额外的零行和列插入正确的位置,而不是返回以下内容?

      data.2
data.1  1 2 3 4
      1 1 0 2 0
      2 1 0 1 1
      3 0 0 0 0
      4 1 0 0 0
4

1 回答 1

7

您需要将向量转换为factors,每个向量都包含levels您想要包含在输出中的所有内容。

levs <- sort(union(data.1, data.2))
table(factor(data.1, levs), factor(data.2, levs))
#    
#     1 2 3 4
#   1 1 0 2 0
#   2 1 0 1 1
#   3 0 0 0 0
#   4 1 0 0 0
于 2013-11-04T17:29:53.790 回答