如何将函数应用于所有数据框变量?

时间:2015-11-05 16:11:09

标签: r

我想要一个包含90个变量的数据帧,以及超过100万个观测值。我想计算每个变量的NA行百分比。我有以下代码: sum(is.na(dataframe $ variable)/ nrow(dataframe)* 100) 我的问题是,如何将这个函数应用于所有90个变量,而不必在代码中键入所有变量名?

2 个答案:

答案 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