如何根据R中的有效值(NA除外)数选择数据帧中的某些列?
我使用的是R,我有一个包含多个列的数据框架。我想运行一个代码并自动检查每列中的值数(有效值,而不是NA)。然后,它应该选择50%的行由有效值填充的列,并将它们保存在新的数据框中 有人能帮我做这个吗?多谢各位如何根据R中的有效值(NA除外)数选择数据帧中的某些列?,r,validation,dataframe,R,Validation,Dataframe,我使用的是R,我有一个包含多个列的数据框架。我想运行一个代码并自动检查每列中的值数(有效值,而不是NA)。然后,它应该选择50%的行由有效值填充的列,并将它们保存在新的数据框中 有人能帮我做这个吗?多谢各位 是否有任何方法可以将代码应用于数量不确定的列 使用purrr包,您可以编写下面的函数来检查缺失值的百分比: pct_missing <- purrr::map_dbl(df,~mean(is.na(.x))) pct\u missing您也可以在R base中创建一个函数来自动检索与
是否有任何方法可以将代码应用于数量不确定的列 使用
purrr
包,您可以编写下面的函数来检查缺失值的百分比:
pct_missing <- purrr::map_dbl(df,~mean(is.na(.x)))
pct\u missing您也可以在R base中创建一个函数来自动检索与标准匹配的列:
功能:
ColSel <- function(df){
vals <- apply(df,2, function(fo) mean(is.na(fo))) < .5
return(df[,vals])
}
ColSel谢谢你,这太有帮助了。如何选择这些有效列并自动创建新数据集?new_data=df[colMeans(is.na(df))
library(dplyr)
df_new <- df %>% select(one_of(selected_column))
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)