如何在R中按组创建滞后差异?

问题描述 投票:0回答:1

我有以下数据框:

df <- data.frame(id = c("1", "1", "1", "2", "2"), 
                 x = c(12, 20, 24, 10, 14))

id   x
 1  12
 1  20
 1  24
 2  10
 2  14

我想获得

x
每个
id
的滞后差异。预期结果:

id   x
 1  12
 1   8
 1   4
 2  10
 2   4

最好使用

dplyr
解决方案。

请注意,这个问题不是重复的,因为在我的例子中,组指的是 ID,而不是无序类别。

r variables dplyr tidyverse data-cleaning
1个回答
0
投票

使用

diff

library(dplyr)

df %>% 
  mutate(x = c(x[1], diff(x)), .by = id)
  id  x
1  1 12
2  1  8
3  1  4
4  2 10
5  2  4
© www.soinside.com 2019 - 2024. All rights reserved.