gpt4 book ai didi

r - 合并两个数据帧

转载 作者:行者123 更新时间:2023-12-04 12:20:57 26 4
gpt4 key购买 nike

我有以下数据框:

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,...

然后,我可以使用合并功能并使用年份和国家合并它们(一对多)。

我试图按照上面的建议转换数据框。但是,我能想到的唯一方法是使用几个复杂的“for”循环。如果有人有更简单的方法,将不胜感激。此外,如果您认为可以以更简单的方式合并这两个数据框,那也很棒。

最佳答案

您需要融化的第一个数据框。

library(reshape)
melt(dat, id.vars="Date,Year") # may need to add ...,c())

重命名新列以匹配您的其他 data.frame。

然后合并(或者你可能更喜欢加入,使用 plyr 包)
merge(dat,dat2, by=c("Date","Country"))

或者:
library(plyr)
join(dat,dat2, by=c("Date","Country"))

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

关于r - 合并两个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12941677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com