提取不同列的值

时间:2016-06-03 13:40:44

标签: r extract

我想从不同的列中提取值,具体取决于列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

数据帧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列({3)来计算数据帧2的值。 {1}})。另一个示例,数据帧1中的第5行位于agegrp_1并且Agegrp 5为2661.所以这里应该查看数据帧2和第4列中的第3行(POSCODN)请参阅下面的数据框示例(agegrp_3的补充):

istrata

有办法做到这一点吗?

非常感谢帮助!

1 个答案:

答案 0 :(得分:2)

来自x <- c(3,2,1,1,1)的帮助:

  

通过[单个参数索引数组时,我可以使用as作为矩阵   许多列,因为有x的尺寸;结果是一个向量   具有与i的每一行中的索引集相对应的元素。

因此子集可以是矩阵。第1列将是行,第2列将表示列。

如果x是1:nrow(df),我们可以将其与行cbind(1:nrow(df), x) x [1,] 1 3 [2,] 2 2 [3,] 3 1 [4,] 4 1 [5,] 5 1 合并。矩阵看起来像:

df[cbind(1:nrow(df), x)]

如果我们将此矩阵用于子集df[1,3],则第一次提取将为df[2,2],第二次提取将为Gender,依此类推。但我们需要考虑x + 1列,并在第二列df[cbind(1:nrow(df), x+1)] [1] 0.1378446 0.2396694 0.3646209 0.3934426 0.2844828 添加1。

strata[cbind(1:nrow(strata), istrata$Agegrp + 1L)]

修改

使用新名称:

CGRect