我的数据集(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
列值混为一谈。我无法确定如何获得正确的结果。
感谢任何帮助。
谢谢!
答案 0 :(得分:2)
使用矩阵索引来提取值:
df[cbind(1:nrow(df), df$Position)]
# [1] 71 21 96 12 16
以正常方式分配结果:
df$Result <- df[cbind(1:nrow(df), df$Position)]