嗨,我有一个这样的数据框。
df= structure(list(x = c(116, 116, 176, 176, 367, 367, 367), order = c("1", "2", "1", "2", "1", "2", "3")
, value = c(8.6, 9.23, 8.9, 9.06,9.57, 10.48, 11.3))
, row.names = c("1", "2", "3", "4", "5","6", "7"), class = "data.frame")
x order value
1 116 1 8.60
2 116 2 9.23
3 176 1 8.90
4 176 2 9.06
5 367 1 9.57
6 367 2 10.48
7 367 3 11.30
我喜欢做的,没有循环,是得到每个唯一 x 样本的最后一个和第一个时间顺序的差异。例如,367 应该是 1.73。我尝试使用带有延迟的 dplyr,但我似乎无法弄清楚如何确保差异仅在最后一个和第一个之间。
df %>%
dplyr::group_by(x) %>%
dplyr::mutate(diff = value - lag(value)) %>% data.frame()
这对所有 x 产生零差异。
谢谢。