R 在数据帧的子集上插入变量

R 在数据帧的子集上插入变量,r,plyr,R,Plyr,我有一个大型的数据框架,它包含了来自多个州数年的调查结果。以下是数据结构: state | survey.year | time1 | obs1 | time2 | obs2 CA | 2000 | 1 | 23 | 1.2 | 43 CA | 2001 | 2 | 43 | 1.4 | 52 CA | 2002 | 5 | 53 | 3.2 | 61 ... CA | 1998

我有一个大型的数据框架,它包含了来自多个州数年的调查结果。以下是数据结构:

state | survey.year | time1 | obs1 | time2 | obs2
CA    | 2000        | 1     | 23   | 1.2   | 43
CA    | 2001        | 2     | 43   | 1.4   | 52
CA    | 2002        | 5     | 53   | 3.2   | 61
...
CA    | 1998        | 3     | 12   | 2.3   | 20
CA    | 1999        | 4     | 14   | 2.8   | 25
CA    | 2003        | 5     | 19   | 4.3   | 29
...
ND    | 2000        | 2     | 223   | 3.2   | 239
ND    | 2001        | 4     | 233   | 4.2   | 321
ND    | 2003        | 7     | 256   | 7.9   | 387
对于每个state/survey.year组合,我想插入obs2,使其时间位置与(time1,obs1)对齐

ie我想将数据帧分解为state/survey.year块,执行线性插值,然后将各个state/survey.year数据帧缝合回主数据帧

我一直在想如何使用plyr和Hmisc软件包来实现这一点。但是一直让我自己陷入困境

下面是我为插值编写的代码:

require(Hmisc)
df <- new.obs2 <- NULL
for (i in 1:(0.5*(ncol(indirect)-1))){
 df[,"new.obs2"] <-   approxExtrap(df[,"time1"],
                                     df[,"obs1"],
                                     xout = df[,"obs2"],
                                     method="linear",
                                     rule=2)
}
require(Hmisc)

df这应该很简单

ddply(df,.(state,survey.year),transform,
                              new.obs2 = approxExtrap(time1,obs1,xout = obs2,
                                                      method = "linear",
                                                      rule = 2))
但是我不能向你保证任何事情,因为我一点也不知道你的
for
循环的意义是什么。(每次通过循环它都会覆盖
df[,“new.obs2”]
?您将整个数据帧
df
初始化为
NULL
?什么是
间接的
?)