在df中添加列。`$<-.data.frame中出错:替换后有x行,数据有153行。

问题描述 投票:0回答:1

当我试图从回归中向我的数据框架添加一列时,我收到一个错误。

df <- airquality
ozone.ols <- lm(Ozone ~ Temp, data = df)
df$residuals <- ozone.ols$residuals

它返回以下错误。

Error in `$<-.data.frame`(`*tmp*`, resi, value = c(`1` = 25.2723695469062,  : 
  replacement has 116 rows, data has 153

我猜问题是缺少值?我如何解决这个问题?

我的最终目标是生成一个残差图,如下所示。这个 指南。因此,在上面的代码之后,就产生了绘图。

library(ggplot2)
ggplot(data = df, aes(y = residuals, x = Temp)) + 
  geom_point()
r missing-data
1个回答
1
投票

你猜对了,问题是 lm 删除了缺失值,所以结果向量的长度是错误的,R不知道如何将其添加回数据框架。

你有几个选择:(1)使用一个可以承受缺失变量的建模函数,如 xgboost(2)为缺失的数据推算一个值(3)让模型保持原样,但在有缺失数据的地方,预测就没有定义。

(1)和(2)你可以写一整本书,但要实现(3)你可以做以下事情。

df$result <- NA ## actually, this line is not necessary
df$result[complete.cases(df[,c("Ozone","Temp")])] <- ozone.ols$residuals
© www.soinside.com 2019 - 2024. All rights reserved.