R 匹配并合并两个数据帧

R 匹配并合并两个数据帧,r,R,我想合并并匹配以下CSV文件 CSV 1 Year Qrtrs BD BS BY All 1950 JAS 0 1 0 1 1950 OND 0 2 1 3 1951 JAS 1 0 4 5 CSV 2 Year JFM AMJ JAS OND 1950 LN LN NN LN 1951 LN NN EN EN 我想得到ff Year Qrtrs CASE

我想合并并匹配以下CSV文件

CSV 1

Year    Qrtrs   BD  BS  BY  All
1950    JAS     0   1   0   1
1950    OND     0   2   1   3
1951    JAS     1   0   4   5
CSV 2

Year    JFM AMJ JAS OND
1950    LN  LN  NN  LN
1951    LN  NN  EN  EN
我想得到ff

Year    Qrtrs   CASE    BD  BS  BY  All
1950    JAS       NN    0   1   0   1
1950    OND       LN    0   2   1   3
1951    JAS       EN    1   0   4   5
我是新来R的。谢谢你的帮助

另外,我想在最后的CSV中添加剩余的QRTR,并在BD、BS、BY、ALL中添加“0”。请看下面

Year    Qrtrs   CASE    BD  BS  BY  All
1950    JAS       NN    0   1   0   1
1950    OND       LN    0   2   1   3
1950    AMJ       LN    0   0   0   0
1950    JFM       LN    0   0   0   0
谢谢

资料
此外,还有一个基本方法:

df2.stack <- stack(df2, select = -Year)
df2.2 <- cbind(df2$Year, df2.stack)
names(df2.2) <- c("Year", "CASE", "Qrtrs")
merge(df1, df2.2, by = c("Year", "Qrtrs"))

df2.stack获取
CASE
列的逻辑是什么?可能重复的
library(tidyr)
library(dplyr)

df2.2 <- gather(df2, key = "Qrtrs", value = "CASE", - Year)

df2.2

#   Year Qrtrs CASE
# 1 1950   JFM   LN
# 2 1951   JFM   LN
# 3 1950   AMJ   LN
# 4 1951   AMJ   NN
# 5 1950   JAS   NN
# 6 1951   JAS   EN
# 7 1950   OND   LN
# 8 1951   OND   EN

left_join(df1, df2.2)

#   Year Qrtrs BD BS BY All CASE
# 1 1950   JAS  0  1  0   1   NN
# 2 1950   OND  0  2  1   3   LN
# 3 1951   JAS  1  0  4   5   EN
df2.stack <- stack(df2, select = -Year)
df2.2 <- cbind(df2$Year, df2.stack)
names(df2.2) <- c("Year", "CASE", "Qrtrs")
merge(df1, df2.2, by = c("Year", "Qrtrs"))