R:替换有[x]行,数据有[y]-新变量中线性模型的残差

R:替换有[x]行,数据有[y]-新变量中线性模型的残差,r,R,我试图在我的数据框架中创建一个新变量,称为“残差”,它需要包含线性模型中的残差。问题是R不喜欢它,因为输出只有718行,数据帧(data.frame.use)有796行。我希望在全部796个案例中填入残差或NA。如何让R添加到NA中?干杯 data.frame.use$residuals <- resid(lm(FCNA ~ Age + Gender, data = data.frame.use)) 当NA存在时,函数broom::augment生成一列.rownames,该列映射到原始

我试图在我的数据框架中创建一个新变量,称为“残差”,它需要包含线性模型中的残差。问题是R不喜欢它,因为输出只有718行,数据帧(data.frame.use)有796行。我希望在全部796个案例中填入残差或NA。如何让R添加到NA中?干杯

data.frame.use$residuals <- resid(lm(FCNA ~ Age + Gender, data = data.frame.use))

当NA存在时,函数
broom::augment
生成一列
.rownames
,该列映射到原始数据框中的行号

因此,我们可以通过向原始数据添加行号来进行连接。请注意,
.rownames
是字符类型,因此我们必须更改
.rownames
或行号,以便类型匹配

把所有这些放在一起,像这样的东西应该会起作用。我假设您想要标准化残差
.std.resid
。如果没有,请使用
.resid

library(dplyr)
library(broom)

data.frame.use %>% 
  lm(FCNA ~ Age + Gender, data = .) %>% 
  augment() %>% 
  select(.rownames, .std.resid) %>% 
  right_join(mutate(data.frame.use, row = as.character(row_number())), 
             by = c(".rownames" = "row"))

听起来像是从模型中删除了缺少的观测值,给出的行比原始行少。我将使用
broom
软件包中的
augment
获得包含残差+原始观测值的数据帧。感谢您的帮助。不幸的是,我尝试过将扫帚包与augment命令一起使用,但它没有结合原始+残差。相反,它会删除线性模型中未使用的案例,并简单地添加额外的列。这比我以前拥有的要好,但并不能解决我的问题,因为我最终还是得到了718个案例。啊,是的,augment做到了:)在这种情况下,我们需要一些原始数据帧和扩展数据帧通用的标识符,我们可以在其中加入。让我考虑一下,然后再打给你。同时,从
data.frame.use
.Hmm中查看一些数据会有所帮助,我可以在我的数据中想到两种可能性。我的原始(预模型)数据中确实有一个“Unique_ID”字段,但lm函数似乎将其删除。否则,augment函数确实提供了一个.rownames,我们可以将它链接回原始数据帧?(新的.rownames列与原始数据框中的行号不匹配)。。。要是我知道这是什么意思就好了!非常感谢。你们会及时解决的:)从开始。
library(dplyr)
library(broom)

data.frame.use %>% 
  lm(FCNA ~ Age + Gender, data = .) %>% 
  augment() %>% 
  select(.rownames, .std.resid) %>% 
  right_join(mutate(data.frame.use, row = as.character(row_number())), 
             by = c(".rownames" = "row"))