我想基于'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
我尝试使用which
,for-loop
和if_else
语句都无济于事,我敢肯定它必须有一个简单的解决方案。任何帮助,不胜感激。
答案 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