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

如何在R中对两个data.frame执行左连接并按ID排序

解决方案

先还原你的两个数据框:

# 数据框A
A <- structure(list(ID = c(111L, 222L, 333L, 444L, 555L, 666L)), row.names = c(NA, 6L), class = "data.frame")

# 数据框B
B <- structure(list(ID = c(111L, 222L, 444L, 555L, 777L, 888L), Created.At = c("2018-10-31 06:25:20", "2019-01-19 15:42:19", "2019-01-19 15:42:50", "2020-06-30 22:04:54", "2019-01-19 15:51:48", "2019-01-19 15:51:48")), row.names = c(NA, 6L), class = "data.frame")

方法一:Base R实现

用merge()做左连接(all.x = TRUE保留A的所有行),再用order()按ID排序:

# 左连接并排序
result_base <- merge(A, B, by = "ID", all.x = TRUE)
result_base <- result_base[order(result_base$ID), ]

# 查看结果
print(result_base)

输出结果:

ID           Created.At
1 111 2018-10-31 06:25:20
2 222 2019-01-19 15:42:19
3 333                <NA>
4 444 2019-01-19 15:42:50
5 555 2020-06-30 22:04:54
6 666                <NA>

方法二:dplyr包实现

用tidyverse风格的函数完成左连接和排序:

# 加载dplyr包
library(dplyr)

# 左连接并排序
result_dplyr <- A %>%
  left_join(B, by = "ID") %>%
  arrange(ID)

# 查看结果
print(result_dplyr)

输出结果与Base R方法完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:05:04