根据其他两列中的值查找值

时间:2019-08-18 22:43:56

标签: r dataframe indexing

我想基于'ID_1'和'ID_2'的值在列VAR_1中查找一个值。

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_1记录在新列RES

结果应如下所示:

   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

我尝试使用whichfor-loopif_else语句都无济于事,我敢肯定它必须有一个简单的解决方案。任何帮助,不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要?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