删除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, ]