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

如何在R中合并含ID的不等长数据集?附澳洲车祸数据示例代码需求

R语言合并两类澳洲车祸数据集的实现示例

没问题,我来帮你写一个R语言的合并示例代码。首先得明确:要合并两个数据集,必须有一个共同的关联键。根据你的描述,数据集B的ID是车祸发生日期,但数据集A的ID是类似d1、d2的标识——这里我假设两者的ID其实是对应的(比如d1对应某个具体日期,或者你可以调整字段名让它们共用同一个关联键)。下面我会先构造符合你描述的样本数据,再展示合并方法。

# 构造样本数据集A:包含ID、Area、Speed字段
dataset_a <- data.frame(
  ID = c("d1", "d2", "d3"),  # 示例ID
  Area = c("悉尼", "墨尔本", "布里斯班"),
  Speed = c(50, 70, 60),
  stringsAsFactors = FALSE
)

# 构造样本数据集B:每个车祸对应多条人员记录,包含ID(车祸日期)、性别、驾照类型
# 这里假设B的ID和A的ID是对应的(如果实际是日期,可替换为类似"2023-10-01"的字符串)
dataset_b <- data.frame(
  ID = c("d1", "d1", "d2", "d3", "d3"),  # 同一个ID对应多名涉事人员
  涉事人员性别 = c("男", "女", "男", "女", "男"),
  驾照类型 = c("正式驾照", "临时驾照", "正式驾照", "正式驾照", "临时驾照"),
  stringsAsFactors = FALSE
)

方法一:使用dplyr包(推荐,代码更易读)

dplyr是tidyverse生态里的核心包,处理数据合并非常方便:

# 先安装并加载dplyr(如果还没安装的话)
install.packages("dplyr")
library(dplyr)

# 左连接合并:保留dataset_a的所有记录,匹配dataset_b中对应的人员信息
dataset_c <- dataset_a %>%
  left_join(dataset_b, by = "ID")

# 查看合并后的数据集
print(dataset_c)

方法二:使用Base R的merge函数

如果你不想加载额外的包,可以用base R自带的merge函数:

# 左连接合并,all.x=TRUE表示保留dataset_a的所有行
dataset_c_base <- merge(dataset_a, dataset_b, by = "ID", all.x = TRUE)

# 查看结果
print(dataset_c_base)

关键参数说明

  • 左连接(left_join/all.x=TRUE):会保留数据集A的所有车祸记录,即使该车祸在数据集B中没有对应的人员信息(此时性别和驾照类型字段会显示NA)。
  • 如果只需要保留同时存在于两个数据集的车祸记录,可以用内连接(inner_join/merge默认参数)。
  • 如果两个数据集的关联键字段名不同(比如A用"CrashID",B用"车祸日期"),可以调整连接参数:
    • dplyr中:left_join(dataset_b, by = c("CrashID" = "车祸日期"))
    • base R中:merge(dataset_a, dataset_b, by.x = "CrashID", by.y = "车祸日期", all.x = TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:39:51