我有一个包含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是缺失值.
提前致谢.
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)