使用dplyr按组计算连续行之间的差异?
Calculating the difference between consecutive rows by group using dplyr?
我有一个包含 ID 和时间戳的数据框。我想计算单个 ID 的每个顺序时间戳之间的差异。
我的数据框如下所示:
id time
Alpha 1
Alpha 4
Alpha 7
Beta 5
Beta 10
我正在尝试添加如下列 time.difference
:
id time time.difference
Alpha 1 NA
Alpha 4 3
Alpha 7 4
Beta 5 NA
Beta 10 5
有没有一种干净的方法可以使用 dplyr 来做到这一点? (或者 tidyr 或其他比 vanilla R 更容易阅读的东西?)
像这样:
dat %>%
group_by(id) %>%
mutate(time.difference = time - lag(time))
使用data.table
library(data.table)
library(dplyr)
setDT(dat)[, time.difference := time - lag(time, 1L), by = id]
我有一个包含 ID 和时间戳的数据框。我想计算单个 ID 的每个顺序时间戳之间的差异。
我的数据框如下所示:
id time
Alpha 1
Alpha 4
Alpha 7
Beta 5
Beta 10
我正在尝试添加如下列 time.difference
:
id time time.difference
Alpha 1 NA
Alpha 4 3
Alpha 7 4
Beta 5 NA
Beta 10 5
有没有一种干净的方法可以使用 dplyr 来做到这一点? (或者 tidyr 或其他比 vanilla R 更容易阅读的东西?)
像这样:
dat %>%
group_by(id) %>%
mutate(time.difference = time - lag(time))
使用data.table
library(data.table)
library(dplyr)
setDT(dat)[, time.difference := time - lag(time, 1L), by = id]