如何匹配不同数据框中频次不同的列:ID与对应日期重复关联
解决方案
基础R实现
你的ID(1-5)和df2的日期顺序一一对应,最简单的方式是直接通过ID索引df2的日期列,将其添加到df1中:
df1$Date <- df2$Date[df1$ID]
如果需要单独生成结果DataFrame,也可以用merge函数(设置sort = FALSE保留原顺序):
# 给df2添加对应ID列 df2$ID <- 1:nrow(df2) # 按ID合并两个DataFrame result_df <- merge(df1, df2, by = "ID", sort = FALSE) # 调整列顺序以匹配示例格式 result_df <- result_df[, c("ID", "Date")]
dplyr实现(tidyverse风格)
用dplyr的连接函数更符合tidy数据操作习惯:
library(dplyr) # 给df2添加ID列(对应1到5) df2 <- df2 %>% mutate(ID = row_number()) # 左连接df1和df2,保留df1所有行并匹配对应日期 result_df <- df1 %>% left_join(df2, by = "ID")
执行上述代码后,每个ID对应的日期会自动重复到与该ID在df1中的出现次数一致,得到你需要的结果。
内容的提问来源于stack exchange,提问作者Rollo99
相关产品推荐
相关产品推荐

