我正在使用R,我有一个包含多列的数据框。我想运行一个代码并自动检查每列中的值的数量(有效值,而不是NA)。然后,它应该选择50%的行用有效值填充的列,并将它们保存在新的数据帧中。
有人可以帮我这样做吗?非常感谢你。
是否有任何方法可以将代码应用于不确定数量的列?
答案 0 :(得分:1)
使用purrr
包,您可以在下面编写函数来检查缺失值的百分比:
pct_missing <- purrr::map_dbl(df,~mean(is.na(.x)))
之后,您可以选择名称缺失值少于50%的列。
selected_column <- colnames(df)[pct_missing < 0.5]
要创建新数据集,您可以使用:
library(dplyr)
df_new <- df %>% select(one_of(selected_column))
答案 1 :(得分:0)
您可以在R base中创建一个函数,以自动检索与critria匹配的列:
功能:
ColSel <- function(df){
vals <- apply(df,2, function(fo) mean(is.na(fo))) < .5
return(df[,vals])
}
一些玩具数据
## example
df1 <- data.frame(
a = c(runif(19),NA),
b = c(rep(NA,11),runif(9)),
d = rep(NA,20),
e = runif(20)
)
测试
df2 <- ColSel(df1)