如何有条件地从数据帧中删除观测值而不丢失R中的NA值?
在数据框中有一个名为如何有条件地从数据帧中删除观测值而不丢失R中的NA值?,r,subset,na,missing-data,R,Subset,Na,Missing Data,在数据框中有一个名为YOB的变量。如您所见,共有333个NA值 > summary(train$YOB) Min. 1st Qu. Median Mean 3rd Qu. Max. NA's 1880 1970 1983 1980 1993 2039 333 我发现了一些异常值,并希望消除它们。小于1900且大于2003的任何项目均应删除。我试图通过索引来实现这一点 train = train[which(tra
YOB
的变量。如您所见,共有333个NA
值
> summary(train$YOB)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
1880 1970 1983 1980 1993 2039 333
我发现了一些异常值,并希望消除它们。小于1900且大于2003的任何项目均应删除。我试图通过索引来实现这一点
train = train[which(train$YOB >= 1900 & train$YOB <= 2003),]
另一方面,我在使用
subset
命令时也面临同样的问题
> train = subset(train, YOB >= 1900 & YOB <= 2003)
> summary(train$YOB)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1900 1970 1983 1980 1993 2003
>列车=子集(列车,YOB>=1900和YOB汇总(列车$YOB)
最小第一个曲中位数平均第三个曲最大值。
1900 1970 1983 1980 1993 2003
我也曾尝试在两次尝试中使用此条件,但均未成功,例如:
> train = train[which(!is.na(train$YOB) & train$YOB >= 1900 & train$YOB <= 2003),]
> summary(train$YOB)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1900 1970 1983 1980 1993 2003
>train=train[其中(!is.na(train$YOB)和train$YOB>=1900和train$YOB摘要(train$YOB)
最小第一个曲中位数平均第三个曲最大值。
1900 1970 1983 1980 1993 2003
我想在
YOB
变量中保留有NA
的观察值,只删除那些数值。第二步是计算缺失值。该将给出数值索引并跳过所有那些NA行。为了避免这种情况,使用不带wrappi的逻辑索引使用哪个
设置为ng。这样索引将为NA,即使有其他非NA的值,该行也将保持为NA
res1 <- train[train$YOB >= 1900 & train$YOB <= 2003,]
res1[is.na(res1$YOB),]
# YOB col2
#NA NA NA
用一个简单的例子
set.seed(25)
d1 <- data.frame(v1 = c(NA, 1, 5), v2 = rnorm(3))
d1$v1 >1
#[1] NA FALSE TRUE
我们只得到真值的索引。根据OP,NA和满足逻辑条件的行都应该返回。在这种情况下
d1[is.na(d1$v1)|d1$v1 > 1,]
# v1 v2
#1 NA -0.2118336
#3 5 -1.1533076
数据
set.seed(29)
训练很有效,谢谢@akrun-如果有人能解释两者的区别,我很乐意接受答案。太好了。你甚至回答了我想问的一个问题。谢谢你的帮助。
set.seed(25)
d1 <- data.frame(v1 = c(NA, 1, 5), v2 = rnorm(3))
d1$v1 >1
#[1] NA FALSE TRUE
which(d1$v1 >1)
#[1] 3
d1[is.na(d1$v1)|d1$v1 > 1,]
# v1 v2
#1 NA -0.2118336
#3 5 -1.1533076
set.seed(29)
train <- data.frame(YOB = sample(c(NA, 1850:2015), 100, replace=TRUE),
col2 = rnorm(100))