我有两个数据帧。两个数据帧具有相同的列名。Period
和Code
列值匹配(即。它们的组合就是一个键)。
对于键匹配的行,我想将来自dataframe1的列a
的值与来自dataframe2的列a
的值相乘,对于列c
也是如此。我认为解决方案可能涉及到一个左连接。
数据帧如下:
dataframe1:
<表类>
期
代码
c
tbody><<tr>2014-01-13 ABC 1 8 2015-01-13 ABC 2 9 2015-01-13 LMZ 3 10 2016-01-13 LMZ 4 11 表类>
您可以根据需要使用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