我一直在尝试找出一种方法将我正在使用的 6 个数据框拼接在一起,这些数据框有大约 50 列我想要匹配在一起。
最终目标是将每个数据集中的所有行在其共享列名称下合并到一个包含我感兴趣的相关列的大型数据集中。每个数据集的行数略有不同,但所有感兴趣的列名称都会匹配。
想知道什么方法最好?我一直无法弄清楚如何通过多列合并 2 个以上的 dfs!
merge_data1 <- list(hos_2015_data, hos_2016_data, hos_2017_data,
hos_2018_data, hos_2019_data, hos_2020_data, hos_2021_data)
merged_result1 <- merge_data1 %>%
reduce (full_join, by= "Facility.ID")
View (merged_result1)
这只与一列“Facility.ID”匹配,但我还有很多列我也想匹配!
如果您有多个包含许多匹配列的数据框,我怀疑您想要
bind_rows
而不是联接。 bind_rows
将产生更长的数据帧,“堆叠”组件数据帧,而连接将产生更宽的数据帧。连接通常用于多个数据帧共有一个或多个“关键”列,但其他列通常对于每个数据帧是唯一的的情况。如果您有多年的数据,其中数据存储在匹配的列名称中,那么这听起来不像是联接。
library(dplyr)
storms_2015 <- subset(storms, year == 2015)
storms_2016 <- subset(storms, year == 2016)
storms_2017 <- subset(storms, year == 2017)
bind_rows(storms_2015, storms_2016, storms_2017)
结果
# A tibble: 1,535 × 13
name year month day hour lat long status category wind pressure tropicalstorm_force_diameter hurricane_force_diameter
<chr> <dbl> <dbl> <int> <dbl> <dbl> <dbl> <fct> <dbl> <int> <int> <int> <int>
1 Ana 2015 5 6 6 26.8 -79.2 other low NA 25 1016 0 0
2 Ana 2015 5 6 12 28.2 -78.5 other low NA 25 1015 0 0
3 Ana 2015 5 6 18 29.7 -77.8 other low NA 25 1014 0 0
4 Ana 2015 5 7 0 30.8 -77.5 other low NA 30 1012 0 0
5 Ana 2015 5 7 6 30.7 -77.8 other low NA 35 1010 100 0
6 Ana 2015 5 7 12 30.6 -77.5 other low NA 40 1008 210 0
7 Ana 2015 5 7 18 31.2 -77.5 other low NA 40 1005 220 0
8 Ana 2015 5 8 0 31.4 -77.6 subtropical storm NA 40 1003 220 0
9 Ana 2015 5 8 6 31.5 -77.6 subtropical storm NA 40 1002 220 0
10 Ana 2015 5 8 12 31.5 -77.5 subtropical storm NA 40 1000 210 0
# ℹ 1,525 more rows
# ℹ Use `print(n = ...)` to see more rows