【发布时间】:2014-08-28 18:51:35
【问题描述】:
我有一个包含以下数据的动物园对象:
Qty
2013-11-25 12:41:21.33 2
2013-11-25 12:41:22.25 2
2013-11-25 12:41:22.75 75
2013-11-25 12:41:24.22 3
2013-11-25 12:41:25.22 1
2013-11-25 12:41:26.22 1
我想按秒聚合它,将每秒内的值相加,并且还将样本中不存在的秒数设为零,这样我就有了以下常规系列
Qty
2013-11-25 12:41:21 2
2013-11-25 12:41:22 77
2013-11-25 12:41:23 0
2013-11-25 12:41:24 3
2013-11-25 12:41:25 1
2013-11-25 12:41:26 1
注意第三行(尝试使用小插图中解释的聚合,使用转换原始时间戳以消除毫秒精度的函数在出现第三行和常规系列时失败)
我试过了,感谢下面的回答:
如果a是我原来的动物园系列
b=aggregate(a,by=cut(as.POSIXct(floor(as.numeric(index(a))),origin="1970-01-01"), breaks='1 sec'),FUN=sum)
但这给了 数量 2013-11-25 12:41:21 2 2013-11-25 12:41:22 77 2013-11-25 12:41:24 3 2013-11-25 12:41:25 1 2013-11-25 12:41:26 1
所以没有行
2013-11-25 12:41:23 0
这使得这个系列有规律,这是我的问题的重点 非常感谢您的帮助
【问题讨论】:
-
由
cut(as.POSIXct(index(...)), breaks='1 sec')聚合。 -
谢谢.. 如果我的数据以非整数秒开头,那不会给出整数秒.. 你能写下整个命令吗?
-
没有
trunc的方法吗?我不回答动物园对象的屏幕输出提出的问题。我打算问一个关于自动输入的问题。也许有人会回答。生命太短暂了,无法获得正确的输入。如果你想让我玩,我需要 dput() 输出。 -
谢谢.. 确实该解决方案不起作用。我稍微调整了一下以给出整数秒:如果 a 是我原来的动物园系列 b=aggregate(a,by=cut(as.POSIXct(floor(as.numeric(index(a))),,origin="1970- 01-01"), breaks='1 sec'),FUN=sum) 给出数量 2013-11-25 12:41:21 2 2013-11-25 12:41:22 77 2013-11-25 12:41 :24 3 2013-11-25 12:41:25 1 2013-11-25 12:41:26 1 所以没有行 2013-11-25 12:41:23 0 ,这使得系列规则,这是我的问题的重点