首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:计算时间序列中的增量

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

Stack Overflow用户
提问于 2010-04-10 04:00:31
回答 1查看 1.5K关注 0票数 5

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

代码语言:javascript
复制
> 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值总是在增长(就像汽车里的里程计数器)。我需要增量,其间增长了多少,大概是这样:

代码语言:javascript
复制
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中做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-10 04:16:43

一旦切换到像zoo这样的时间感知型数据结构,就只需使用diff()

代码语言:javascript
复制
> 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包的优秀文档。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2610521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档