gpt4 book ai didi

r - 如何整合来自不同日期的两个数据集的数据?

转载 作者:行者123 更新时间:2023-12-04 08:56:35 25 4
gpt4 key购买 nike

想象两个数据集。数据集 df1 是某一事件发生的那一天。 Df1 有多个其他列,但就这个问题而言,只有日期很重要。 Df2 包含两列,进行测量的那一天,以及该测量的值。本质上,我想在 df1 中创建一个新列(“AVG”),它是 df2 中当天的平均值加上前一天的值。例如,df1 中第 2 天的 AVG 将为 12.5 ((10+15)/2)。
下面的一些示例数据。

df1 <- structure(list(day = c(2, 5, 7)), class = "data.frame", row.names = c(NA, 
-3L))

df2 <- structure(list(day = c(1, 2, 3, 4, 5, 6, 7, 8), value = c(10,
15, 8, 13, 7, 20, 25, 12)), class = "data.frame", row.names = c(NA,
-8L))
下面的示例最终产品。
df3 <- structure(list(day = c(2, 5, 7), AVG = c(12.5, 10, 22.5)), class = "data.frame", row.names = c(NA, 
-3L))

最佳答案

您可以使用 lag()来自 dplyr获取先前的值,以便您可以计算滚动方式。

library(dplyr)

df2 %>%
mutate(AVG = (value + lag(value)) / 2, .keep = "unused") %>%
right_join(df1, by = "day")

# day AVG
# 1 2 12.5
# 2 5 10.0
# 3 7 22.5
或通过 zoo::rollmeanr() :
df2 %>%
mutate(AVG = zoo::rollmeanr(value, 2, fill = NA), .keep = "unused") %>%
right_join(df1, by = "day")

# day AVG
# 1 2 12.5
# 2 5 10.0
# 3 7 22.5

关于r - 如何整合来自不同日期的两个数据集的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63798153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com