我正在尝试找出有关data.frame的一些摘要统计信息:
avg.nas <- apply(my.data, 2, function(x) mean(is.na(x)))
这给出了预期的结果:一个带有每列值的命名数值向量。问题是这个值很难管道进入其他操作(例如将它连接到每个变量的描述)。我知道我可以摆弄sapply
,rownames
,t
,as.data.frame
和突变的组合来获得我想要的东西,但是有更多的惯用方法可以获得这种来自数据框的汇总统计数据?
要清楚,我想要的是
avg.nas <- as.data.frame(avg.nas)
names(avg.nas) <- "prop.missing"
avg.nas$Variable <- rownames(avg.na)
答案 0 :(得分:2)
我仍然不完全清楚你在寻找什么,但也许这是另一种选择:
library(reshape2)
x <- data.frame(x = 1:5,y = 6:10)
x[c(1,3),1] <- NA
> setNames(melt(lapply(x,function(x) mean(is.na(x)))),c('Mean','Variable'))
Mean Variable
1 0.4 x
2 0.0 y
答案 1 :(得分:0)
您可以在不rowMeans
的{{1}}值上使用NA
。从您的问题来看,您似乎可能想要添加一个新行,其中每行的比例为NA。
apply
答案 2 :(得分:0)
永远不要在apply
上使用data.frame
。这会将它强制转换为矩阵,并且不会提高内存效率(更不用说对一致类型的更改了)
lapply
将遍历列并返回列表。
as.data.frame(lapply(m, function(x) mean(is.na(x))))