我有一个包含2列的数据集,我想用它来生成第3列.这是基于时间的数据,看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
我希望新列在窗口内是毫秒.因此,对于新窗口,我的新列中的值应为0,否则应该是当前时间戳与上一个时间戳之间的差异.
diff(df$raw_timestamp_part_2) 让我接近,但它不会给我0在窗口的第一次观察.
一个dplyr解决方案.如果调用了数据,df那么你可以这样做
library(dplyr)
group_by(df, num_window) %>%
mutate(newCol = c(0, diff(raw_timestamp_part_2)))
# raw_timestamp_part_2 num_window newCol
# 1 788290 11 0
# 2 808298 11 20008
# 3 820366 11 12068
# 4 120339 12 0
# 5 196328 12 75989
# 6 304277 12 107949
# 7 368296 12 64019
# 8 440390 12 72094
# 9 28311 13 0
# 10 56286 13 27975
Run Code Online (Sandbox Code Playgroud)