我需要根据另一个数据框中的多个条件在一个数据框中查找一个值。例

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

其中AB是data.tables,而Country是字符类型。

08-26 14:14