计算R矩阵中每列的特定整数数量

Con*_*ray 5 r count matrix apply

我有一个矩阵(10 x 100),在这里我需要计算每列每个整数的数量,所以我有一个最终的矩阵是(3 x 100)。每列计数0、1和2。

我认为apply函数在这里会很有用,我提供的代码是我设想的解决方案。

任何帮助将不胜感激。

library(dplyr)
set.seed(100)
a <- matrix(sample(0:2, size=100, replace=TRUE), nrow=10, ncol=100)
out <- apply(a, 2, function(x) count(x))

 Desired output: rows are the sum of each variable "0, 1, 2"

   1 2 3 ...  n
 0 1 1 3
 1 6 3 3
 2 3 6 4
Run Code Online (Sandbox Code Playgroud)

Sot*_*tos 7

有一个称为的函数table,用于计算整个对象的不同值。您可以将其应用于每个列,即

apply(a, 2, table)
Run Code Online (Sandbox Code Playgroud)

将NA包括在计数中,只需使用option useNA,即

apply(a, 2, table, useNA = 'always')

#or with complete syntax
apply(a, 2, function(i)table(i, useNA = 'always'))
Run Code Online (Sandbox Code Playgroud)

就像@IceCreamToucan在评论中提到的那样,如果任何列中都缺少值,那么您希望能够强制转换为数据框(或与此相关的矩阵)。为了克服这个问题,我们可以使用将每个列转换为factor levels = c(0:2),即

apply(a, 2, function(i) table(factor(i, levels = c(0:2)), useNA = 'always'))
Run Code Online (Sandbox Code Playgroud)

  • 是的,这按预期工作。我猜我遇到了[R版本set.seed差异](/sf/ask/3303959081/ )在此示例中。我猜是时候该升级这台机器了。 (2认同)