我有一个大数据集,只想制作一小部分的箱形图。我只想绘制具有10个最高平均值的列,这些平均值至少有三个数据点(因为它是一个稀疏矩阵),按降序排列。
更新:它实际上不是稀疏矩阵。这只是一个比喻,因为有很多新的NAs)
我的数据集包含一个标题(如此命名的列)和整数数字正值,但正如我所说的很多新的。
解决方案:
通过这里提供的帮助和进一步的研究,我得出了以下解决方案。
> barcol<-unlist(sapply(1:N, function(j) sum(!is.na(data[,j]))>2) )
> newdata<-data[,barcol]
> newdata.mean <- colMeans(newdata, na.rm=TRUE)
> newdata.sorted <- newdata[,names(sort(newdata.mean, decreasing=TRUE))]
然后是平均十字线的箱线图。
> boxplot(newdata.sorted[,1:10], ylim = c(0, 10))
> points(newdata.mean[1:10], pch = 13)
答案 0 :(得分:0)
提取感兴趣的列。
编辑:修复一切,最后,我当然希望。对于这个简化示例,我拒绝少于两个非NA值的列。
Rgames> set.seed(1)
Rgames> data<-matrix(NA,4,4)
Rgames> data[sample(1:16,13)]<-sample(10:20,13,rep=TRUE)
Rgames> data
[,1] [,2] [,3] [,4]
[1,] 12 19 17 11
[2,] 16 NA 19 17
[3,] NA 12 10 12
[4,] NA 20 14 16
Rgames> barcol<-unlist(sapply(1:4, function(j) sum(!is.na(data[,j]))>2) )
Rgames> newdata<-data[,barcol]
Rgames> meancol <- order(colMeans(newdata,na.rm=TRUE))
Rgames> newdata
[,1] [,2] [,3]
[1,] 19 17 11
[2,] NA 19 17
[3,] 12 10 12
[4,] 20 14 16
Rgames> meancol
[1] 3 2 1
最后的结果meancol
给出了三个最大列均值的索引,尽管是相反的顺序。如果您有很多列,请使用order