首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分裂时间序列并对R中的不同列应用不同的函数

分裂时间序列并对R中的不同列应用不同的函数
EN

Stack Overflow用户
提问于 2014-04-21 19:37:00
回答 1查看 72关注 0票数 0

假设这是dataframe (dt):

代码语言:javascript
复制
        datetime        price1    price2
2011-01-04 22:00:20       1         7
2011-01-04 22:01:37       2         8 
2011-01-04 22:01:57       3         9
2011-01-04 22:03:03       4        10
2011-01-04 22:03:32       5        11
2011-01-04 22:03:45       6        12

我希望按日期时间(每隔1分钟)将数据拆分,并查找:

对于price1:最后一个观察减去第一个。

price2:所有价格之和。

代码语言:javascript
复制
        time           difference    sum
2011-01-04 22:00:00      1-1=0           7
2011-01-04 22:01:00      3-2=1          17
2011-01-04 22:03:00      6-4=2          33


dt$time <- cut(dt$datetime, "1 min")
dt1min<-ddply(dt,.(time), function(x))

如何定义函数(X)?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-21 20:38:42

下面是我使用data.table包的解决方案:

代码语言:javascript
复制
library(data.table)

dt <- data.table(datetime= c("2011-01-04 22:00:20",
                             "2011-01-04 22:01:37",
                             "2011-01-04 22:01:57",
                             "2011-01-04 22:03:03",
                             "2011-01-04 22:03:32",
                             "2011-01-04 22:03:45"),
                 price1 = c(1,2,3,4,5,6),
                 price2 = c(7,8,9,10,11,12))

dt[, datetime:= as.POSIXct(datetime)] # convert character to timestamp
dt[, time:= format(datetime, "%Y-%m-%d %H:%M")] # create time column

# now split apply,combine
dt[, list(difference = price1[datetime==max(datetime)] - price1[datetime==min(datetime)],
          sum        = sum(price2)),
   by = time]

产出如下:

代码语言:javascript
复制
              time difference sum
1: 2011-01-04 22:00          0   7
2: 2011-01-04 22:01          1  17
3: 2011-01-04 22:03          2  33
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23204581

复制
相关文章

相似问题

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