首页 > 解决方案 > 根据一系列其他两列中的值查找值

问题描述

VAR_1我想根据“ID_1”和“ID_2”的值在列中查找一个值。

set.seed(1234)
df <- data.frame(ID_1 = sample(1:10, 10), 
                 ID_2 = sample(1:10, 10), 
                 VAR_1 = sample(LETTERS[1:10], 10))

df   
   ID_1 ID_2 VAR_1
1     2    7     D
2     6    5     C
3     5    3     B
4     8   10     A
5     9    2     H
6     4    9     E
7     1    6     I
8     7    1     J
9    10    8     F
10    3    4     G

查看 中的数字ID_2,找到匹配的数字并在新列中ID_1记录该行VAR_1RES

结果应该是什么样子:

   ID_1 ID_2 VAR_1 RES
1     2    7     D   J
2     6    5     C   B
3     5    3     B   G
4     8   10     A   F
5     9    2     H   D
6     4    9     E   H
7     1    6     I   C
8     7    1     J   I
9    10    8     F   A
10    3    4     G   E

我已经尝试使用which, afor-loopif_else语句都无济于事,我相信它必须有一个简单的解决方案。非常感谢任何帮助。

标签: rdataframeindexing

解决方案


你需要?match——

df$RES <- with(df, VAR_1[match(ID_2, ID_1)])

   ID_1 ID_2 VAR_1 RES
1     2    7     D   J
2     6    5     C   B
3     5    3     B   G
4     8   10     A   F
5     9    2     H   D
6     4    9     E   H
7     1    6     I   C
8     7    1     J   I
9    10    8     F   A
10    3    4     G   E

推荐阅读