R语言合并不同长度数据:按Exporter匹配并填充NA
解决R语言合并不同长度tibble的问题
嘿,这个需求在R里处理起来很简单,我常用dplyr包的full_join()来搞定这种按指定字段匹配合并、保留所有行并自动填充NA的场景,刚好完全符合你的要求!
步骤1:准备工作(安装加载dplyr)
如果你还没装dplyr包,先执行安装命令,然后加载它:
install.packages("dplyr") # 仅首次使用时需要 library(dplyr)
步骤2:模拟示例数据(你可以替换成自己的数据集)
假设你有两个长度不同的tibble,其中都包含Exporter字段:
# 第一个tibble:包含3个国家 tibble_a <- tibble( Exporter = c("China", "USA", "Germany"), Export_Value = c(5000, 6200, 4800) ) # 第二个tibble:包含4个国家(和第一个有重叠也有新的) tibble_b <- tibble( Exporter = c("USA", "Germany", "Japan", "France"), Import_Value = c(3100, 2900, 4200, 3500) )
步骤3:按Exporter匹配合并,缺失值填充NA
用full_join()函数,指定按Exporter字段合并,它会保留两个数据集中所有的国家,匹配成功的行合并列,匹配失败的对应列自动填充NA:
merged_tibble <- full_join(tibble_a, tibble_b, by = "Exporter")
执行后你会得到这样的结果(tibble格式):
# A tibble: 5 × 3 Exporter Export_Value Import_Value <chr> <dbl> <dbl> 1 China 5000 NA 2 USA 6200 3100 3 Germany 4800 2900 4 Japan NA 4200 5 France NA 3500
额外选项:转换成dataframe格式
如果需要把结果转换成dataframe,只需要用as.data.frame()转换:
merged_dataframe <- as.data.frame(merged_tibble)
不用dplyr?基础R的merge函数也能搞定
如果你不想用dplyr,用基础R的merge()函数也可以,只要设置all = TRUE就能保留所有行并填充NA:
merged_data_base <- merge(tibble_a, tibble_b, by = "Exporter", all = TRUE)
内容的提问来源于stack exchange,提问作者Adilson V Casula
相关产品推荐
相关产品推荐

