【发布时间】:2013-08-05 09:20:18
【问题描述】:
假设我有一个数据框df,其中包含三个变量df$x、df$y、df$z,并且有一个分组变量df$g。
通常,要在每个组内计算一个函数,我会执行以下操作
df$new<-unlist(tapply(df$x,df$g,FUN=myfunc))
现在假设我想在y 和z 组g 的每个值内从x 的回归生成残差,我该如何实现它?
更具体地说,如果不使用组,我会这样做
df$new<-resid(lm(df$x ~ df$y + df$z, na.action, na.exclude))
在组内执行前面的操作的一个解决方案是对 `df$g' 的唯一元素使用循环,但如果有任何矢量化解决方案,那就太好了。
【问题讨论】:
-
你检查过 plyr 包中的
ddply吗? -
检查
?by中的最后一个示例 -
This post 可能会有所帮助。
标签: r loops vectorization regression