在R中,我如何从两个数据帧中相乘某些列的值,其中列具有匹配的名称

  • 本文关键字:数据帧 两个 r dataframe join
  • 更新时间 :
  • 英文 :


我有两个数据帧。两个数据帧具有相同的列名。PeriodCode列值匹配(即。它们的组合就是一个键)。

对于键匹配的行,我想将来自dataframe1的列a的值与来自dataframe2的列a的值相乘,对于列c也是如此。我认为解决方案可能涉及到一个左连接。

数据帧如下:

dataframe1:

<表类> 期 代码 c tbody><<tr>2014-01-13ABC182015-01-13ABC292015-01-13LMZ3102016-01-13LMZ411

您可以根据需要使用left_join (dplyr::left_join),然后取消选择不再需要的列:

library(dplry)
left_join(dataframe1, dataframe2, by=c("Period", "Code")) %>% 
mutate(a=a.x*a.y, c=c.x*c.y) %>% 
select(-c(a.x:c.y))

输出
Period Code   a   c
1 2014-01-13  ABC 0.1 1.6
2 2015-01-13  ABC 1.0 8.1
3 2015-01-13  LMZ 1.2 2.0
4 2016-01-13  LMZ 1.2 4.4

数据。表解决方案在这里:

library(data.table)
setDT(dataframe2)[
setDT(dataframe1),on=.(Period, Code),.(Period, Code, a = a*i.a, c=c*i.c)
]

输出:


Period Code   a   c
1: 2014-01-13  ABC 0.1 1.6
2: 2015-01-13  ABC 1.0 8.1
3: 2015-01-13  LMZ 1.2 2.0
4: 2016-01-13  LMZ 1.2 4.4

最新更新