在R中,如何将拟合值列添加到原始数据框?

时间:2013-09-28 09:09:59

标签: r regression

我有一个多元回归模型。我想将拟合值和残差添加到原始data.frame作为两个新列。我怎样才能做到这一点?我在R中的模型是这样的:

BD_lm <- lm(y ~ x1+x2+x3+x4+x5+x6, data=BD)
summary(BD)

我也得到了拟合值

BD_fit<-fitted(BD_lm)

但我想将此BD_fit值添加为原始数据BD的列。我不知道怎么回事。当我试着打电话给BD_fit时,它只给了我很多数字。我正在运行一个大型数据集,所以很难在这里列出所有这些数据集。

3 个答案:

答案 0 :(得分:17)

假设:

fm <- lm(demand ~ Time, BOD)

然后试试这个:

cbind(BOD, resid = resid(fm), fitted = fitted(fm))

或者这个:

BOD$resid <- resid(fm)
BOD$fitted <- fitted(fm)

增加:

如果NA中有demand个值,那么您的拟合值和残差的长度将与数据的行数不同,这意味着上述条件不起作用。在这种情况下,请使用:na.exclude,如下所示:

BOD$demand[3] <- NA # set up test data
fm <- lm(demand ~ Time, BOD, na.action = na.exclude)

na.exclude会自动使用NA值填充预测和残差,以使它们与原始数据的长度相同。现在前面的行应该可以工作。

答案 1 :(得分:0)

BD_fit<-data.frame(BD_fit)
BD$fit<-BD_fit[1]

答案 2 :(得分:-1)

尽管不详细了解您的情况,但添加到数据框非常简单。你可以像这样添加一个新列:

df <- data.frame(var1=1:10)
df$var2 <- 11:20

您只需确保您的其他数据列与原始列的长度相同。否则,您将无法将它们添加到数据框中。