【发布时间】:2019-03-27 12:49:06
【问题描述】:
我想根据两个条件(名称和日期)合并两个数据框。如果没有找到匹配项,我希望它返回为 NA。
df1:
Date Name Value1 Value2
2009-03 A 30 456
2009-04 A 33 346
2009-05 A 50 856
2009-03 B 80 44
2009-04 B 34 665
2009-03 C 35 756
2009-04 D 64 66
df2:
Name Date ValueX
A 2009-03 34
A 2009-04 466
A 2009-05 55
B 2009-03 65
B 2009-04 568
C 2009-03 56
C 2009-04 676
我希望合并看起来像这样:
Date Name Value1 Value2 **ValueX**
2009-03 A 30 456 34
2009-04 A 33 346 466
2009-05 A 50 856 55
2009-03 B 80 44 65
2009-04 B 34 665 568
2009-03 C 35 756 56
2009-04 D 64 66 NA
我尝试了以下方法:
df3 <- left_join(df1, df2, by = c("Date" = "Date", "Name" = "Name"), df1$ValueX)
df3 <- df1
df3$ValueX <- ifelse(
is.na(match(paste(df1$Date, df1$Name), paste(df2$Date, df2$Name))),
df2$ValueX
)
df3 = merge(df1, df2, by.x=c("Date", "Name"), by.y=c("Date", "Name"), all.x=TRUE)
关于如何解决这个问题的任何建议?
【问题讨论】:
-
merge(df1, df2, all.x = TRUE)确实给出了您预期的输出,对吗?这与您尝试过的相同。有什么问题?
标签: r merge match criteria two-columns