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)
有一个称为的函数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)