R中的频率表

时间:2018-11-06 19:29:14

标签: r contingency

这可能是一个初学者的问题,但我无法在网上找到答案...也许是因为我不擅长描述问题。

我想创建按行分开的名义数据频率表。例如,在此矩阵中:

x <- matrix(nrow = 3, ncol = 3, 
  c("A","B","B",
  "C","C","B",
 "D","A","B"
  ))

使用table(x)函数可以给我:

  

A B C D
  2 4 2 1

但是我想为每一行获取单独的计数,结果表为:

  

A B C D
  1 2 0 0

     

0 1 1 0

     

1 1 0 1

我确定这是列联表的某个版本,但就我的一生而言,我无法弄清楚。

1 个答案:

答案 0 :(得分:1)

我们可以使用applyMARGIN=1来遍历各列,并用指定为'x'的factor个元素的levels转换为unique ,并获取table

un1 <- sort(unique(c(x)))
t(apply(x, 2, function(x) table(factor(x, levels = un1))))
#     A B C D
#[1,] 1 2 0 0
#[2,] 0 1 2 0
#[3,] 1 1 0 1

或使用矢量化方法

table(c(col(x)), c(x))
#    A B C D
#  1 1 2 0 0
#  2 0 1 2 0
#  3 1 1 0 1