【发布时间】:2016-06-03 13:40:44
【问题描述】:
我想从不同的列中提取值,具体取决于列x 的值。此列位于数据框 1 中,包含不同的因子水平(例如 1、2、3、4、5、6)。我要从中提取值的列在数据框 2 中。两个数据框的示例:
数据帧 1 被称为 istrata(173 行)
> istrata[1:5,]
POSCODN Geslacht Agegrp
1 2651 0.4761905 1
2 2651 0.4761905 5
3 2652 0.5785124 1
4 2652 0.5785124 1
5 2661 0.5270758 3
Dataframe 2 被称为strata (1721 行):
> strata[1:5,]
POSCODN Geslacht agegrp_1 agegrp_2 agegrp_3 agegrp_4 agegrp_5 agegrp_6
1 2651 0.4761905 0.34085213 0.10025063 0.13784461 0.27318296 0.13784461 0.010025063
2 2652 0.5785124 0.34710744 0.23966942 0.11570248 0.19008264 0.10743802 0.000000000
3 2661 0.5270758 0.36462094 0.13357401 0.15162455 0.25270758 0.09747292 0.000000000
4 2662 0.6229508 0.39344262 0.26229508 0.11475410 0.21311475 0.01639344 0.000000000
5 2665 0.5387931 0.28448276 0.08189655 0.17241379 0.31465517 0.13362069 0.012931034
所以最后我想实现,当在数据帧 1 的第一行,Agegrp 为 1 时,它从第 1 行(因为类似 POSCODN)第 3 列(agegrp_1)估算数据帧 2 的值)。另一个例子,数据框 1 中的第 5 行位于 Agegrp 5 中,并且有 POSCODN 2661。所以这里应该查看数据框 2 中的第 3 行和第 4 列 (agegrp_3) 请参见下面的数据框示例(@987654331 的补充@):
Geslacht I_Agegrp
1 0.4761905 0.34085213
2 0.4761905 0.13784461
3 0.5785124 0.34710744
4 0.5785124 0.34710744
5 0.5270758 0.15162455
有没有办法做到这一点?
非常感谢您的帮助!
【问题讨论】:
-
可以使用二维矩阵作为索引
df[cbind(seq_along(x), x+1L)]