【发布时间】:2020-05-08 15:07:31
【问题描述】:
我在 r 中有一个脚本来计算身体状况残差。我想将此代码应用于对应于特定个人类别的每一列。
例如,我将运行此代码来计算属于 1 类的所有个体的身体状况残差
1) 选择感兴趣的行
Data1 = RawData %>% select(ID,temperature, Bodysize1, mass1, year) %>% filter((temperature %in% c(20:29) & Bodysize1 %in% c(20:100) & mass1 %in% c(15:40))
2) 使用创建的数据创建新模型
Model1 =lmer(log(mass1) ~ log(Bodysize1) + temperature + (1|year), data = Data1)
3) 提取残差并将ID添加到残差中
ResModel1 = resid(Model1)
ID=Data1$ID
Res1 =data.frame(ResModel1 ,ID)
4) 将残差添加到我的 RawData
RawData2.0 = merge(RawData, Res1, by = c("ID"), all.x = T)
为了避免重新运行此代码并手动将所有 1 更改为 2,然后将所有 2 更改为 3...等等,有没有办法执行此命令自动 whith 循环和应用系列?
我的数据
ID TEMPERATURE BODYSIZE1 MASS1 BODYSIZE2 MASS2 YEAR
81-012 0.03830645 200 1450 205 1425 1981
84-069 0.26923078 200 1473 205 1498 1984
84-134 0.32692307 209 1448 195 1323 1984
84-145 0.27884614 197 1373 197 1498 1984
84-190 0.31129807 191 1248 195 1323 1984
85-155 0.33056709 198 1637 229 1988 1985
提前致谢
【问题讨论】: