R语言使用dplyr将数据框指定行替换为新数据框数据的实现方法
解决方案
你需要替换mydata中2021年9月15、16日的全量小时数据,用dplyr实现有两种常用方案,按需选择即可。
方案1:全量替换指定日期数据(适配你的场景,新数据覆盖两天全小时记录)
这个方案操作简单无冗余,适合当前newmydata已经包含两天完整48条小时粒度记录的场景:
# 先加载依赖包 library(dplyr) library(lubridate) # 处理逻辑:先删除旧数据中对应日期的记录,再拼接修正数据 mydata_updated <- mydata %>% # 过滤掉9月15、16日的旧数据 filter(!datex %in% ymd(c("2021-09-15", "2021-09-16"))) %>% # 拼接修正后的新数据 bind_rows(newmydata)
方案2:按主键匹配更新(适配新数据仅包含部分需要修正的小时记录的场景)
这个方案不需要提前删除旧数据,会自动匹配相同主键的行完成更新,未匹配的行保持不变:
mydata_updated <- mydata %>% rows_update( y = newmydata, # 指定匹配主键:日期、小时、门店三个字段共同确定唯一一条小时销售记录 by = c("datex", "hourx", "store") )
结果验证
你可以用下面的代码确认替换是否成功:
# 统计相邻日期的记录数,15、16日应该各有24条小时记录 mydata_updated %>% filter(datex %in% ymd(c("2021-09-14", "2021-09-15", "2021-09-16", "2021-09-17"))) %>% group_by(datex) %>% summarise(小时记录数 = n())
内容的提问来源于stack exchange,提问作者Faryan
相关产品推荐
相关产品推荐

