我有一个包含 3000 个 obs 的数据集(teleco),其中有许多(332)个缺失值(NA)。当我尝试将所有缺失值子集到另一个数据帧中时,我奇怪地得到了 3745 个 obs。
clean = na.omit(teleco)
new = teleco[is.na(teleco[1:19])==TRUE, ]
Run Code Online (Sandbox Code Playgroud)
干净 - 2668 obs of 19 vars
新 - 3745 个 obs,共 19 个变量
电信 - 3000 obs of 19 vars
我确定我做错了什么。有人可以帮忙吗?
如果我们需要对至少有一个 的行进行子集化NA,我们可以使用rowSums逻辑矩阵 ( is.na(teleco))创建一个索引,并将其转换为逻辑向量 ( !=0)。
teleco[rowSums(is.na(teleco))!=0,]
Run Code Online (Sandbox Code Playgroud)
或者我们可以使用applywithMARGIN=1创建一个逻辑向量。
teleco[apply(is.na(teleco), 1, any),]
Run Code Online (Sandbox Code Playgroud)
set.seed(24)
teleco <- as.data.frame(matrix(sample(c(NA,0:10), 20*5, replace=TRUE), ncol=5))
Run Code Online (Sandbox Code Playgroud)