我需要根据另一个数据框中的多个条件在一个数据框中查找一个值。例
A=
Country Year Number
USA 1994 455
Canada 1997 342
Canada 1998 987
必须添加了来自“rate”名称的列
B=
Year USA Canada
1993 21 654
1994 41 321
1995 56 789
1996 85 123
1997 65 456
1998 1 999
这样最终的数据帧是
C=
Country Year Number Rate
USA 1994 455 41
Canada 1997 342 456
Canada 1998 987 999
换句话说:从B中的A查找年份和国家/地区,结果是C。我想不加循环地执行此操作。我想要一个通用的方法,这样我就可以基于两个以上的条件进行查找。
最佳答案
这是使用data.table
的另一种方法,不需要将第二个数据表转换为长格式:
require(data.table) # 1.9.6+
A[B, Rate := get(Country), by=.EACHI, on="Year"]
# Country Year Number Rate
# 1: USA 1994 455 41
# 2: Canada 1997 342 456
# 3: Canada 1998 987 999
其中
A
和B
是data.tables,而Country
是字符类型。