我有以下数据框。

> temp
  x1    x2
1  1 INDIA
2  2 INDIA
3  3    US
4  4    US

> PortfolioIndices
  Country   Index CCY
1   INDIA   CNX50 INR
2      US   SP500 USD
3      UK FTSE100 GBP

我想使用来自PortfolioIndices数据框的映射,在temp中再添加一列,并使用与x2列中相应国家/地区对应的货币。这样的东西应该是输出
> temp
  x1    x2  x3
1  1 INDIA INR
2  2 INDIA INR
3  3    US USD
4  4    US USD

我不想使用for循环,因为实际数据可能非常大,在这种情况下使用for循环效率很低。有没有更好的方法来实现给定的输出?

提前致谢。

最佳答案

您可以使用merge:

> merge(temp, PortfolioIndices, by.x = "x2", by.y = "Country")
     x2 x1 Index CCY
1 INDIA  1 CNX50 INR
2 INDIA  2 CNX50 INR
3    US  3 SP500 USD
4    US  4 SP500 USD

09-28 11:51