使用 apply() 和 table() 包括缺失值的频率
Include frequencies of missing values using apply() and table()
我有一个简单的矩阵并应用一个函数来计算频率:
testM <- matrix(c(rep(1,3), rep(0,3)), ncol = 2, byrow = T)
> testM
[,1] [,2]
[1,] 1 1
[2,] 1 0
[3,] 0 0
r <- apply(testM, 1, function(x) { table(x) })
申请后我得到了 tables
的列表
x Frq x.1 F.1 x.2 F.2
1 2 0 1 0 2
1 2 1 1 0 2
这个结果是用成对的列读取的。如您所见,table() 函数并没有 "guess" 我只计算 0 和 1,而是将另一个频率为 2 的 1(或另一个频率为 2 的 0)放在我期望的地方
x Frq x.1 F.1 x.2 F.2
1 2 0 1 1 0
0 0 1 1 0 2
有什么想法或更好的解决方案吗?
我们需要将每个 vector
转换为 factor
并指定 levels
apply(testM, 1, function(x) table(factor(x, levels=0:1)) )
我有一个简单的矩阵并应用一个函数来计算频率:
testM <- matrix(c(rep(1,3), rep(0,3)), ncol = 2, byrow = T)
> testM
[,1] [,2]
[1,] 1 1
[2,] 1 0
[3,] 0 0
r <- apply(testM, 1, function(x) { table(x) })
申请后我得到了 tables
的列表x Frq x.1 F.1 x.2 F.2
1 2 0 1 0 2
1 2 1 1 0 2
这个结果是用成对的列读取的。如您所见,table() 函数并没有 "guess" 我只计算 0 和 1,而是将另一个频率为 2 的 1(或另一个频率为 2 的 0)放在我期望的地方
x Frq x.1 F.1 x.2 F.2
1 2 0 1 1 0
0 0 1 1 0 2
有什么想法或更好的解决方案吗?
我们需要将每个 vector
转换为 factor
并指定 levels
apply(testM, 1, function(x) table(factor(x, levels=0:1)) )