You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在R中合并不同年份数据集构建整洁数据集的问题求助

解决tidy数据合并:纵向堆叠而非关联合并

嘿,我完全懂你现在的困惑!你想要的是把两个同结构的年份数据集纵向堆叠,让不同年份的数据分行展示,但误用了full_join()——这个函数是用来做横向关联合并的,这就是为啥会出现GDP.xGDP.y这类后缀变量的原因~

问题根源

full_join(df1, df2, by = "country")的作用是根据country把两个数据集的列拼在一起:当两个数据集里有同名但不在by参数里的变量(比如你的YearGDP),它会自动给这些变量加上.x(来自df1)和.y(来自df2)的后缀来区分,这显然不是你要的“分行展示各年份数据”的效果。

正确解决方案:用bind_rows()做行绑定

在tidyverse的dplyr包中,bind_rows()就是专门用来堆叠结构相同(变量名一致)的数据集的,正好匹配你的需求:

library(dplyr)

# 堆叠两个数据集
merged_df <- bind_rows(df1, df2)

# 可选:按Country排序,让同一国家的年份数据排在一起
merged_df <- merged_df %>% arrange(Country)

运行这段代码后,你就能得到完全符合预期的结果:

CountryYearGDP
Albania2000X1
Albania2010X2
Brazil2000X3
Brazil2010X4
China2000X5
China2010X6

小提示

如果你的两个数据集变量名有细微差异(比如一个是country小写,一个是Country大写),可以先统一变量名,或者用bind_rows(.id = "data_source")参数给每条数据标记来源(比如标记是来自2000年还是2010年的数据集),确保堆叠过程不出错。

内容的提问来源于stack exchange,提问作者user1778351

火山引擎 最新活动