您能否循环遍历数据帧中的每一列以查找R中NA值的计数?

您能否循环遍历数据帧中的每一列以查找R中NA值的计数?,r,for-loop,null,R,For Loop,Null,我正在使用一个由322055行和51列组成的数据帧。这是一个家庭作业,我一直想问的问题是“删除所有空栏数超过50%的列”。我已经通过运行以下代码(将数据集称为df)找到了如何查找特定列的空值百分比: total_cases一个更简单的选择是使用colMeans获得每列上NAs的比例,然后使用该比例创建逻辑向量并对列进行子集划分 dfnew <- df[, colMeans(is.na(df)) < 0.5] dfnew一个更简单的选择是使用colMeans获得每列上NAs的比例,然

我正在使用一个由322055行和51列组成的数据帧。这是一个家庭作业,我一直想问的问题是“删除所有空栏数超过50%的列”。我已经通过运行以下代码(将数据集称为df)找到了如何查找特定列的空值百分比:


total_cases一个更简单的选择是使用
colMeans
获得每列上
NA
s的比例,然后使用该比例创建逻辑向量并对列进行子集划分

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

dfnew一个更简单的选择是使用
colMeans
获得每列上
NA
s的比例,然后使用该比例创建逻辑向量并对列进行子集划分

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

dfnew另一个基本解决方案:

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

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

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

您可以执行
df[,colMeans(is.na(df))<0.5]
您可以执行
df[,colMeans(is.na(df))<0.5]
感谢您的快速响应。我运行了这段代码,它返回了一个包含49列的表,除了将其与原始df进行比较并尝试自己找出它之外,还有什么方法可以知道它删除了哪些列?另外,我应该编写代码来获取百分比,但我可以对要删除的列列表进行硬编码。@LeighAnneRobinson如果您想知道名称
i1@AndyRominger,请将其作为您自己的解决方案发布。感谢您的快速回复。我运行了这段代码,它返回了一个包含49列的表,除了将其与原始df进行比较并尝试自己找出它之外,还有什么方法可以知道它删除了哪些列?另外,我应该编写代码来获取百分比,但我可以对要删除的列列表进行硬编码。@LeighAnneRobinson如果您想知道名称
i1@AndyRominger,请将其作为您自己的解决方案发布。谢谢