R-根据现有列指定的位置创建新列

时间:2014-09-16 19:23:51

标签: r conditional

我的数据集(df)看起来像这样。

A   B   C   D   E   Position    
67  68  69  70  71   5           
20  21  22  23  24   2           
98  97  96  95  94   3           
2   5   7   9   12   5           
4   8   12  16  20   4           

我正在尝试创建一个新列(Result),其中result的值等于position列中为结果列的每一行指定的列的位置。

例如,如果position列的第1行为5,则Result列的值为第1行的第5列。

我的结果列将如下所示:

     A   B  C   D   E   Position    Result
    67  68  69  70  71   5           71
    20  21  22  23  24   2           21
    98  97  96  95  94   3           96
    2   5   7   9   12   5           12
    4   8   12  16  20   4           16

我使用了以下命令,它不能满足我的需要。它会将每行中的所有position列值混为一谈。我无法确定如何获得正确的结果。

感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:2)

使用矩阵索引来提取值:

df[cbind(1:nrow(df), df$Position)]
# [1] 71 21 96 12 16

以正常方式分配结果:

df$Result <- df[cbind(1:nrow(df), df$Position)]