gpt4 book ai didi

R:计算时间序列中的增量

转载 作者:行者123 更新时间:2023-12-04 19:22:14 25 4
gpt4 key购买 nike

我在 R 中有一个时间序列的样本:

> str(d)
'data.frame': 5 obs. of 3 variables:
$ date: POSIXct, format: "2010-03-04 20:47:00" "2010-03-04 21:47:00" ...
$ x : num 0 10 11 15.2 20
$ y : num 0 5 7.5 8.4 12.5
> d
date x y
1 2010-03-04 20:47:00 0.0 0.0
2 2010-03-04 21:47:00 10.0 5.0
3 2010-03-04 22:47:00 11.0 7.5
4 2010-03-04 23:47:00 15.2 8.4
5 2010-03-05 00:47:00 20.0 12.5

在此示例中,x 和 y 的样本每小时采集一次(但时间增量不固定)。
x 和 y 值总是在增长(就像汽车中的里程计数器)。我需要增量,
两者之间的增长是多少,如下所示:
1 2010-03-04 20:47:00  0.0  0.0
2 2010-03-04 21:47:00 10.0 5.0
3 2010-03-04 22:47:00 1.0 2.5
4 2010-03-04 23:47:00 4.2 0.9
5 2010-03-05 00:47:00 4.8 4.1

而且我还需要每次的增量(x 和 y 增量,除以时间 - 每小时增量)

我将如何在 R 中做到这一点?

最佳答案

只需使用 diff()一旦切换到时间感知数据结构,如 zoo :

> library(zoo)
> DF <- data.frame(date=Sys.time() + 0:4*3600, x = cumsum(runif(5)*10),
y=cumsum(runif(5)*20))
> DF
date x y
1 2010-04-09 15:14:54 9.6282 14.709
2 2010-04-09 16:14:54 12.4041 28.665
3 2010-04-09 17:14:54 18.1643 34.244
4 2010-04-09 18:14:54 27.5785 41.028
5 2010-04-09 19:14:54 33.2779 57.020
> zdf <- zoo(DF[,-1], order.by=DF[,1])
> diff(zdf)
x y
2010-04-09 16:14:54 2.7759 13.9556
2010-04-09 17:14:54 5.7602 5.5792
2010-04-09 18:14:54 9.4142 6.7844
2010-04-09 19:14:54 5.6995 15.9919
>

您可以轻松地将第一行向后填充、合并等——请参阅包 zoo 的优秀文档。详情。

关于R:计算时间序列中的增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2610521/

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