You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:56:43