R:删除缺少特定百分比值的列
R: deleting columns where certain percentage of values is missing
我正在使用类似于以下摘录的数据框。
sample.df
Obs Var1 Var2 Var3
A0001 21 21 21
A0002 21 78 321
A0003 32 98 87
A0004 21 12 54
A0005 21 13 45
A0006 21 87 45
B0007 84 NA 45
B0008 21 NA 98
B0009 2 NA 45
B0010 12 NA 45
我想删除缺少一定百分比变量的列,例如 80%。我试过下面的代码:
sample.df.cln <- apply(sample.df, 2, function(x) {
if (sum(is.na(x)) / nrow(x) > 0.8) {
x <- NULL
}
})
但它返回了以下错误:
Error in if (sum(is.na(x))/nrow(x) > 0.8) { : argument is of length zero
如有任何帮助,我将不胜感激。我也在考虑将代码封装在一个函数中,以便它可以应用于不同的数据帧。
x <- sample.df[ lapply( sample.df, function(x) sum(is.na(x)) / length(x) ) < 0.1 ]
我正在使用类似于以下摘录的数据框。
sample.df
Obs Var1 Var2 Var3
A0001 21 21 21
A0002 21 78 321
A0003 32 98 87
A0004 21 12 54
A0005 21 13 45
A0006 21 87 45
B0007 84 NA 45
B0008 21 NA 98
B0009 2 NA 45
B0010 12 NA 45
我想删除缺少一定百分比变量的列,例如 80%。我试过下面的代码:
sample.df.cln <- apply(sample.df, 2, function(x) {
if (sum(is.na(x)) / nrow(x) > 0.8) {
x <- NULL
}
})
但它返回了以下错误:
Error in if (sum(is.na(x))/nrow(x) > 0.8) { : argument is of length zero
如有任何帮助,我将不胜感激。我也在考虑将代码封装在一个函数中,以便它可以应用于不同的数据帧。
x <- sample.df[ lapply( sample.df, function(x) sum(is.na(x)) / length(x) ) < 0.1 ]