【发布时间】:2014-12-21 17:33:38
【问题描述】:
我有一个包含 2 列的数据集,我想用它来生成第三列。它是基于时间的数据,看起来像这样:
raw_timestamp_part_2 num_window
1 788290 11
2 808298 11
3 820366 11
4 120339 12
5 196328 12
6 304277 12
7 368296 12
8 440390 12
9 28311 13
10 56286 13
我希望新列在窗口内以毫秒为单位。因此,对于一个新窗口,我的新列中的值应该是 0,否则应该是当前时间戳和前一个时间戳之间的差异。
diff(df$raw_timestamp_part_2) 让我很接近,但它并没有给我在窗口中的第一次观察结果为 0。
【问题讨论】:
-
c(0,diff(df$raw_timestamp_part_2))怎么样 -
这让我更近了一步,但它只处理第一个元素,而不是新窗口的其余部分。 (但谢谢——我最初错过了!)
-
我可能误解了这个问题。但是,无论如何,你有两个答案。一个基本的 R 解决方案是
with(df, ave(raw_timestamp_part_2, num_window, FUN=function(x) c(0, diff(x))))