R-清理NA、NaN、DIV/0的数据集列

R-清理NA、NaN、DIV/0的数据集列,r,data-cleaning,R,Data Cleaning,我有一个160列的数据集。其中一些列包含大量NA和#DIV/0! 我通过以下方式加载数据: training=read.csv(“training.csv”,header=TRUE,na.strings=c(“na”,“NaN”,“u”,“DIV/0!”)) 如何仅保留所有行中包含值的列?可能: training[ , colSums(is.na(training)) == 0] @斯里韦罗的答案是有效的,这里是另一个 set.seed(1234) dat <- as.data.fram

我有一个160列的数据集。其中一些列包含大量NA和#DIV/0! 我通过以下方式加载数据:

training=read.csv(“training.csv”,header=TRUE,na.strings=c(“na”,“NaN”,“u”,“DIV/0!”))

如何仅保留所有行中包含值的列?

可能:

training[ , colSums(is.na(training)) == 0]

@斯里韦罗的答案是有效的,这里是另一个

set.seed(1234)
dat <- as.data.frame(matrix(runif(100000),1000,10))
dat[sample(1:100,20,replace=TRUE),sample(1:10,3,replace=TRUE)] <- NA

# apply through each column seeing if any are NAs
dat[,sapply(dat,function(x) !any(is.na(x)))]

# Check if both answers give same result
all.equal(dat[,which(sapply(dat,function(x) !any(is.na(x))))],
dat[ , colSums(is.na(dat)) == 0])
[1] TRUE

使用
dplyr
中选择_if()
的另一个选项。它允许您对数据帧的列使用谓词。只有谓词返回
TRUE
的列才会被选择:

library(dplyr)
select_if(dat, function(x) !any(is.na(x))

请添加您尝试过的内容,以便屁可以做您想做的事情。如果显示数据集,可能更容易提供帮助。
library(dplyr)
select_if(dat, function(x) !any(is.na(x))