我有一个ID和时间戳的数据帧.我想计算单个id的每个连续时间戳之间的差异.
我的数据框看起来像这样:
id time
Alpha 1
Alpha 4
Alpha 7
Beta 5
Beta 10
Run Code Online (Sandbox Code Playgroud)
我正在尝试添加如time.difference下列:
id time time.difference
Alpha 1 NA
Alpha 4 3
Alpha 7 4
Beta 5 NA
Beta 10 5
Run Code Online (Sandbox Code Playgroud)
使用dplyr有一个干净的方法吗?(或者tidyr或其他比香草R更容易阅读的东西?)
ber*_*ant 24
像这样:
dat %>%
group_by(id) %>%
mutate(time.difference = time - lag(time))
Run Code Online (Sandbox Code Playgroud)
运用 data.table
library(data.table)
library(dplyr)
setDT(dat)[, time.difference := time - lag(time, 1L), by = id]
Run Code Online (Sandbox Code Playgroud)