如何计算矩阵中的缺失数据?

时间:2014-11-23 02:00:34

标签: r matrix

我有一个字符矩阵

B = matrix( 
    c("foo", "--", "bam", "pop", "--", "foo","--","fizz"), 
    nrow=2, 
    ncol=4)

缺少数据由" - "表示。我试图编写一个for循环,在每列中得到" - "''''如果" - "的分数在该列中>> = .5然后我想将该列索引存储在名为bad_columns的单独向量中。在这个矩阵中,第一列有一个" - " .5的分数,第二列有一个" - "分数为0.

同样对于矩阵的行,我试图获得" - "的分数。在每一行。如果" - "的分数在行中是> = .5然后我想将该行索引存储在一个名为bad_rows的单独向量中。

2 个答案:

答案 0 :(得分:3)

这是apply()函数的非常标准用法,矩阵用于对行/列执行操作。请务必阅读?apply帮助页面。然后,您只需使用which()来获取符合条件的值的索引。

bad_columns <- which(apply(B, 2, function(x) mean(x=="--")) >= .5)
bad_rows <- which(apply(B, 1, function(x) mean(x=="--")) >= .5)

bad_columns
# [1] 1 3 4
bad_rows
# [1] 1

答案 1 :(得分:3)

colSums功能非常快:

colSum(B == “ - ”)/ nrow(B)

> badcols <- which( colSums(B=="--")/nrow(B) >= 0.5 )
> badcols
[1] 1 3 4

当然,还有一个rowSums功能。