您可以遍历数据帧中的每一列以找到R中的NA值计数吗?

我正在使用一个包含322,055行和51列的数据框。这是一项家庭作业,我遇到的问题是“删除任何包含超过50%空值的列”。我已经想出了如何通过运行以下代码(将数据集称为df)来查找特定列的空值百分比:

total_cases<-nrow(df)

print(sum(is.na(df$col1)/total_cases)*100)

如何让它遍历数据集中的每一列?我不能对所有51列使用此代码。

wuyuesuper 回答:您可以遍历数据帧中的每一列以找到R中的NA值计数吗?

一个更简单的选择是使用NA来获取每列中colMeans的比例,然后使用该比例创建一个逻辑向量并将这些列作为子集

dfnew <- df[,colMeans(is.na(df)) < 0.5]
,

另一种基本的R解决方案:

clean_df <- df[,sapply(df,function(x){sum(is.na(x))/length(x) < .5})]

确定要删除的载体:

setdiff(names(df),names(clean_df))
本文链接:https://www.f2er.com/3092488.html

大家都在问