gpt4 book ai didi

r - 匹配不同长度的时间向量 : a tricky one

转载 作者:行者123 更新时间:2023-12-01 07:35:42 25 4
gpt4 key购买 nike

我有两组来自不同机器的测量值。它们是随着时间的推移以略有不同的时间间隔测量的——例如一个每 5 分钟测量一次,而另一个每 3 分钟测量一次。优点是每 5 分钟一次被计算为整个时间间隔的平均值,因此这些值应该大致对应。我想用每 5 分钟一次的测量值(光)扩展矢量,以便它的值与每 5 分钟测量一次的矢量值大致同步。然后应该用前面的值填充间隙

这里是每5分钟一次的数据示例

Date             Light 
26/05/2011 16:00 -529.98
26/05/2011 16:05 -276.68
26/05/2011 16:10 -179.63
26/05/2011 16:15 -385.57
26/05/2011 16:20 -1273.6
26/05/2011 16:25 -1109.7

每3分钟一次的数据

    Date             Flux 
26/05/2011 16:01 0.64
26/05/2011 16:04 -1.96
26/05/2011 16:07 -0.51
26/05/2011 16:10 -1.34
26/05/2011 16:13 -1.28
26/05/2011 16:15 -0.22

我也不应该认为光测量矢量(每 5 分钟)比每 3 分钟的矢量短。因此,目标是使 5 分钟测量值的向量与 3 分钟向量的长度相同。

我意识到这是一个相当棘手的问题,但我们会非常欢迎任何建议。

最佳答案

如果我没理解错的话,这可以通过 zoo 或 xts 轻松实现。首先,这是您的示例数据:

Lines1 <- "Date,Light
26/05/2011 16:00,-529.98
26/05/2011 16:05,-276.68
26/05/2011 16:10,-179.63
26/05/2011 16:15,-385.57
26/05/2011 16:20,-1273.6
26/05/2011 16:25,-1109.7"

Lines2 <- "Date,Flux
26/05/2011 16:01,0.64
26/05/2011 16:04,-1.96
26/05/2011 16:07,-0.51
26/05/2011 16:10,-1.34
26/05/2011 16:13,-1.28
26/05/2011 16:15,-0.22"

con <- textConnection(Lines1)
Light <- read.csv(con, stringsAsFactors=FALSE, header=TRUE)
close(con)
con <- textConnection(Lines2)
Flux <- read.csv(con, stringsAsFactors=FALSE, header=TRUE)
close(con)

现在我们加载 xts 包,它也加载了 zoo。然后我们将 LightFlux data.frame 对象转换为 xts 对象。

library(xts)
light <- xts(Light$Light, as.POSIXct(Light$Date, format="%d/%m/%Y %H:%M"))
flux <- xts(Flux$Flux, as.POSIXct(Flux$Date, format="%d/%m/%Y %H:%M"))

这是很棒的部分。 merge.xtsmerge.zoo 将按索引对齐每个系列。 na.locf 用以前的值填充每个 NA

Data <- merge(light,flux)
# light flux
# 2011-05-26 16:00:00 -529.98 NA
# 2011-05-26 16:01:00 NA 0.64
# 2011-05-26 16:04:00 NA -1.96
# 2011-05-26 16:05:00 -276.68 NA
# 2011-05-26 16:07:00 NA -0.51
# 2011-05-26 16:10:00 -179.63 -1.34
# 2011-05-26 16:13:00 NA -1.28
# 2011-05-26 16:15:00 -385.57 -0.22
# 2011-05-26 16:20:00 -1273.60 NA
# 2011-05-26 16:25:00 -1109.70 NA
Data <- na.locf(Data)

最后,我们可以从合并的 Data 对象中提取 3 分钟索引。

Data[index(flux),]
# light flux
# 2011-05-26 16:01:00 -529.98 0.64
# 2011-05-26 16:04:00 -529.98 -1.96
# 2011-05-26 16:07:00 -276.68 -0.51
# 2011-05-26 16:10:00 -179.63 -1.34
# 2011-05-26 16:13:00 -179.63 -1.28
# 2011-05-26 16:15:00 -385.57 -0.22

关于r - 匹配不同长度的时间向量 : a tricky one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6457818/

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