【问题标题】:Frequency table by row in R [duplicate]R中的逐行频率表[重复]
【发布时间】:2019-04-10 05:58:51
【问题描述】:

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

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

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

我确定这是某种形式的列联表,但对于我的一生,我无法弄清楚。

【问题讨论】:

  • 您的预期输出似乎适用于每一列。另外,有些值不正确

标签: r contingency


【解决方案1】:

我们可以使用applyMARGIN=1 循环遍历列,将levels 指定为'x' 的unique 元素转换为factor,并获得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

【讨论】:

    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 2016-10-21
    相关资源
    最近更新 更多