删除R中的行使数据集失真
我已使用以下代码从数据库中删除了某些行:删除R中的行使数据集失真,r,rows,regression,lmer,R,Rows,Regression,Lmer,我已使用以下代码从数据库中删除了某些行: df2 <- df1[!(df1$variable==1), ] df2新代码应该可以。旧代码的问题是由df1$变量中的NAs和=比较运算符的组合引起的 如果阅读有关比较运算符的帮助,?“==”,您将看到, “缺失值(NA)和NaN值被认为是不可比的,甚至与它们本身不可比,因此涉及它们的比较总是会导致NA。” 在您的情况下,只要df1$变量是NA,尝试子集的结果就是NA(不是TRUE或FALSE),这导致行中的其他变量是NA。例如: df1 &l
df2 <- df1[!(df1$variable==1), ]
df2新代码应该可以。旧代码的问题是由df1$变量
中的NA
s和=
比较运算符的组合引起的
如果阅读有关比较运算符的帮助,?“==”
,您将看到,
“缺失值(NA)和NaN值被认为是不可比的,甚至与它们本身不可比,因此涉及它们的比较总是会导致NA。”
在您的情况下,只要df1$变量是NA
,尝试子集的结果就是NA
(不是TRUE
或FALSE
),这导致行中的其他变量是NA
。例如:
df1 <- expand.grid(variable=c(0, 1, NA), var2=c(0, 1, NA))
sel1 <- !(df1$variable==1)
sel1
df1[sel1, ]
sel2 <- df1$variable==0 | is.na(df1$variable)
sel2
df1[sel2, ]
df1您可能需要向我们展示更多信息,比如(1)第一和第二回归模型的完整代码;(2) 子集前后表(df$变量)
的输出;(3) dim(df)
之前和之后。请检查class(evs27m$穆斯林)
或者更好地发布dput(head(evs27m))的输出。
。
df1 <- expand.grid(variable=c(0, 1, NA), var2=c(0, 1, NA))
sel1 <- !(df1$variable==1)
sel1
df1[sel1, ]
sel2 <- df1$variable==0 | is.na(df1$variable)
sel2
df1[sel2, ]