如何在R中合并data1与data2并去除date重叠行?
合并重叠日期数据框并保留指定行的实现方案
你可以通过两种常见方式实现需求:保留data1中独有的日期行,其余(重叠及data2独有)使用data2的数据,最终生成无重复日期的合并数据框。
原始数据
data1 <- data.frame(date = c(123, 124, 125, 126), peter = c(10, 11, NA, NA), turner = c(20, 21, NA, NA)) data2 <- data.frame(date = c(124, 125, 126, 127, 128), peter = c(12, 10, 30, 50, 70), turner = c(23, 20, 40, 60, 80))
方法一:使用tidyverse(dplyr包)
先将data2放在前面合并,再按日期去重保留首次出现的行(即data2的内容),最后排序日期:
library(dplyr) result <- bind_rows(data2, data1) %>% distinct(date, .keep_all = TRUE) %>% arrange(date) # 输出结果 print(result)
方法二:使用基础R语法
先提取data1中不与data2重叠的日期行,再与data2合并后排序:
# 筛选data1独有的日期行 data1_unique <- data1[!data1$date %in% data2$date, ] # 合并并排序 result <- rbind(data1_unique, data2) result <- result[order(result$date), ] # 输出结果 print(result)
验证结果
两种方法都能得到你想要的目标数据:
target <- data.frame(date=c(123,124,125,126,127,128), peter=c(10,12,10,30,50,70), turner=c(20,23,20,40,60,80)) # 检查结果是否匹配 all.equal(result, target) # 返回TRUE表示结果正确
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

