R 将测试数据集中的新因子级别替换为`NA'时出错`
我已将数据集拆分为测试和培训数据集。我尝试在训练集上拟合回归,然后在测试集上使用预测。当我这样做时,我会收到一条错误消息:“model.frame factor x中的错误具有新的级别”。我知道这是因为在我的测试数据中有一些级别在我的训练数据中看不到 我想做的只是消除或忽略不在两个数据集中的级别。我尝试过这样做,但它没有将任何级别设置为R 将测试数据集中的新因子级别替换为`NA'时出错`,r,regression,linear-regression,predict,levels,R,Regression,Linear Regression,Predict,Levels,我已将数据集拆分为测试和培训数据集。我尝试在训练集上拟合回归,然后在测试集上使用预测。当我这样做时,我会收到一条错误消息:“model.frame factor x中的错误具有新的级别”。我知道这是因为在我的测试数据中有一些级别在我的训练数据中看不到 我想做的只是消除或忽略不在两个数据集中的级别。我尝试过这样做,但它没有将任何级别设置为NA,并且id对象显示“integer(empty)”: id您的代码将出现“替换长度不同”错误 id <- which(!(test$x %in% lev
NA
,并且id
对象显示“integer(empty)”:
id您的代码将出现“替换长度不同”错误
id <- which(!(test$x %in% levels (train$x))
train
中的所有数据将用于构建线性回归模型。P
中的一些预测将是NA
我仍然无法获取id
对象来正确识别哪些级别不在两个数据集中。在工作空间中,它只显示整数(0)
那么,你的问题的重点是什么??!!test$x
中的所有级别都在级别(train$x)
内,并且没有新的级别。但即使在需要添加droplevels命令之前,第一部分也不能正常工作。似乎我要么得到一个空整数,要么得到一个错误,说替换有190708行,数据有189590行。我仍然无法让Id对象正确识别哪些级别不在两个数据集中。在工作空间中,它只显示整数(空)。因为我收到一条错误消息说“模型中的错误。帧因子x有新的级别”。这似乎表明测试$x中的所有级别都不在序列$x中。
id <- which(!(test$x %in% levels (train$x))
test$x[id] <- NA
test$x <- droplevels(test$x) ## also don't forget to remove unused factor levels
fit <- lm(y ~ x, data = train)
P <- predict(fit, test)