r - 使用 R 中的 dplyr 将数据框中的某些行替换为其他新数据框
问题描述
我有调用 mydata 的数据。mydata 包含来自阿拉巴马州销售商店的完整 9 月数据。这里是:
# My Data
library(lubridate)
gen_seq <- seq(ymd_h("2021-09-01-00"), ymd_h("2021-09-30-23"), by = "hours")
datex <- date(gen_seq)
hourx <- hour(gen_seq)
store <- "Alabama"
sales <- round(runif(length(datex), 10, 50), 0)
mydata <- data.frame(datex, hourx, store, sales)
现在我有一个从日期“2021-09-15”和“2021-09-16”开始的新修订版,它是修订版:
# New My Data
library(lubridate)
gen_seq <- seq(ymd_h("2021-09-15-00"), ymd_h("2021-09-16-23"), by = "hours")
datex <- date(gen_seq)
hourx <- hour(gen_seq)
store <- "Alabama"
sales <- round(runif(length(datex), 10, 50), 0)
newmydata <- data.frame(datex, hourx, store, sales)
我该如何更换它?谢谢
解决方案
您可以连接两个数据集并使用 更新值coalesce
。
library(dplyr)
left_join(mydata, newmydata, by = c("datex", "hourx", "store")) %>%
mutate(sales = coalesce(sales.y, sales.x)) %>%
select(-sales.x, -sales.y)
在基础 R 中,
merge(mydata, newmydata, by= c("datex", "hourx", "store"), all.x = TRUE) |>
transform(sales = ifelse(is.na(sales.y), sales.x, sales.y))
推荐阅读
- javascript - Flask:如何根据聊天室添加聊天记录?
- c# - Semaphore slim 可处理每个时间段的节流
- matrix - 是否可以在下三角距离矩阵上计算 SIMPROF?
- android - Android API 级别 30,无法再从 Android arp 表中获取 wifi 网络设备 MAC 地址
- javascript - 如何使用 Flask 在 PostgreSQL 中存储行?
- python - 如何做到这一点,以便我可以将按钮应用于我想要的任何窗口?
- javascript - 如何从javascript中的字符串创建对象属性函数?
- python - 在 matplotlib 中更改 yaxis 数字格式
- azure - Azure 函数(由容器支持)运行两个 docker 映像,即使缩放设置为 1
- python - 根据日期和 ID 自定义排序大型 Json