R 匹配并合并两个数据帧
我想合并并匹配以下CSV文件 CSV 1R 匹配并合并两个数据帧,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
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"))