R 合并两个数据帧

R 合并两个数据帧,r,merge,dataframe,R,Merge,Dataframe,我有以下数据框: Date,Year,Austria,Germany,... 1969-12-31,1969,96.743,95.768,... 1970-01-30,1970,95.515,95.091,... 1970-02-27,1970,95.075,95.235,... 最后,我想将此数据框与另一个数据框合并,如下所示: Year,Country,Exp,... 1969,Austria,1,... 1970,Austria,0,... 1969,Germany,0,... 1970

我有以下数据框:

Date,Year,Austria,Germany,...
1969-12-31,1969,96.743,95.768,...
1970-01-30,1970,95.515,95.091,...
1970-02-27,1970,95.075,95.235,...
最后,我想将此数据框与另一个数据框合并,如下所示:

Year,Country,Exp,...
1969,Austria,1,...
1970,Austria,0,...
1969,Germany,0,...
1970,Germany,1,...
在我看来,我必须将第一个数据帧更改为以下格式:

Date,Year,Country,Exp,…
1969-12-31,1969,Austria,96.743,...
1970-01-30,1970,Austria,95.515,...
1970-02-27,1970,Austria,95.075,...
1969-12-31,1969,Germany,95.768,...
1970-01-30,1970,Germany,95.091,...
1970-02-27,1970,Germany,95.235,...
然后,我可以使用merge函数,使用Year和Country将它们(一对多)合并


我已尝试按照上面的建议转换数据帧。然而,我能想到的唯一方法是使用两个复杂的“for”循环。如果有人能提供更简单的方法,我们将不胜感激。此外,如果您认为合并这两个数据帧可以以一种更简单的方式完成,那也将非常好。

第一个需要融合的数据帧

library(reshape)
melt(dat, id.vars="Date,Year") # may need to add ...,c())
重命名新列以匹配其他data.frame

然后合并(或者您可能更愿意使用plyr包加入)

或:


我更喜欢join函数,因为它比merge更直观,尤其是在有NA值的情况下。

我认为整形函数或整形2包可以做到这一点。非常感谢!这正是我需要的!在r中使用基本包可能吗?
merge(dat,dat2, by=c("Date","Country"))
library(plyr)
join(dat,dat2, by=c("Date","Country"))