gpt4 book ai didi

r - 基于使用 R 的另一个数据集中日期的日期之间的平均值

转载 作者:行者123 更新时间:2023-12-05 01:02:06 25 4
gpt4 key购买 nike

我有两个数据框“Conc”和“Flow”。

流量在设定期间的每一天都有一个值,而 Conc 仅在该期间内的某些天有一个值。

我希望能够做的是使用 r 计算 Conc 值之间每个时期的平均流量值。

以下代码将生成两个示例数据框来说明我正在使用的数据集类型:

Conc <- data.frame(Date = as.Date(c("2012/01/13", "2012/02/16", "2012/05/02", "2012/07/28",
"2012/11/10")), Conc = c(0.88, 0.55, 0.34, 0.21, 0.98))
Flow <- data.frame(Date = c(seq(as.Date("2012/01/01"), by = "day", length.out = 365)),
Flow = c(sample(seq(from = 0.01, to = 5, by = 0.1), size = 365, replace = TRUE)))

理想情况下,输出数据帧应该是这样的:
Period    Mean_Flow
1 2.01
2 1.41
3 3.81
4 0.31

我很欣赏 Conc 天之间的可变时间使这变得棘手。目前,我想出的最好的方法是在 excel 中手动执行此操作,但我真的很想找到一个 R 解决方案来避免自己为我拥有的大约 10 个不同的数据集执行此操作。

谢谢你。

最佳答案

这是使用 data.table 的可能方法包裹foverlaps功能:

在两个数据集中创建时间间隔

library(data.table)
Conc <- setDT(Conc)[, `:=`(start = Date, end = c(Date[2:(.N - 1)] - 1, Date[.N], NA))][-.N]
Flow <- setDT(Flow)[, `:=`(start = Date, end = Date)]

key Flow数据集以便使用 foverlaps函数并运行函数
setkey(Flow, start, end)
overlaps <- foverlaps(Conc, Flow, type = "any", which = TRUE)

创建 Flow 内重叠的索引数据集并通过这些索引计算平均值
Flow[overlaps$yid, Period := overlaps$xid]
na.omit(Flow[, list(Mean_Flow = mean(Flow)), by = Period])
# Period Mean_Flow
# 1: 1 2.189412
# 2: 2 2.263947
# 3: 3 2.762874
# 4: 4 2.349048

关于r - 基于使用 R 的另一个数据集中日期的日期之间的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27104123/

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