我想要一个包含90个变量的数据帧,以及超过100万个观测值。我想计算每个变量的NA行百分比。我有以下代码: sum(is.na(dataframe $ variable)/ nrow(dataframe)* 100) 我的问题是,如何将这个函数应用于所有90个变量,而不必在代码中键入所有变量名?
答案 0 :(得分:3)
使用lapply()
方法:
lapply(df, function(x) sum(is.na(x))/nrow(df)*100)
答案 1 :(得分:3)
如果您想返回data.frame
而不是列表(通过lapply()
)或向量(通过sapply()
),您可以使用summarise_each
dplyr
1}}包:
library(dplyr)
df %>%
summarise_each(funs(sum(is.na(.)) / length(.)))
或者,更简洁:
df %>% summarise_each(funs(mean(is.na(.))))
df <- data.frame(
x = 1:10,
y = 1:10,
z = 1:10
)
df$x[c(2, 5, 7)] <- NA
df$y[c(4, 5)] <- NA