如何在R中计算条件模式?

Ift*_*har 3 r mode

我有一个包含11列和100000行(例如)的大型数据集,其中我有1,2,3,4的值.其中4是缺失值.我需要的是计算模式.我正在使用以下数据和功能

ac<-matrix(c("4","4","4","4","4","4","4","3","3","4","4"), nrow=1, ncol=11)  

m<-as.matrix(apply(ac, 1, Mode))
Run Code Online (Sandbox Code Playgroud)

如果我使用上面的命令然后它会给我"4"作为模式,我不需要.我希望模式将省略4并将"3"显示为模式,因为4是缺失值.

提前致谢.

And*_*rie 7

R有一个强大的机制来处理缺失的值.您可以表示缺失值,NA并且许多R函数都支持处理NA值.

使用随机数创建一个小矩阵:

set.seed(123)
m <- matrix(sample(1:4, 12, replace=TRUE), ncol=3)
m
     [,1] [,2] [,3]
[1,]    2    4    3
[2,]    4    1    2
[3,]    2    3    4
[4,]    4    4    2
Run Code Online (Sandbox Code Playgroud)

由于您通过值4表示缺失,因此可以通过NA以下方式替换每个事例:

m[m==4] <- NA
m

     [,1] [,2] [,3]
[1,]    2   NA    3
[2,]   NA    1    2
[3,]    2    3   NA
[4,]   NA   NA    2
Run Code Online (Sandbox Code Playgroud)

例如,计算平均值:

mean(m[1, ], na.rm=TRUE)
[1] 2.5

apply(m, 1, mean, na.rm=TRUE)
[1] 2.5 1.5 2.5 2.0
Run Code Online (Sandbox Code Playgroud)

要计算模式,您可以使用Mode包中的函数prettyR:(请注意,在这个非常小的数据集中,只有第4行具有唯一的模态值:

apply(m, 1, Mode, na.rm=TRUE)
[1] ">1 mode" ">1 mode" ">1 mode" "2"     
Run Code Online (Sandbox Code Playgroud)