如何在R数据帧中按组找到每行的值与上一行的差?

在数据分析中,有时我们需要找到当前值与先前值之间的差异,并且组也可能需要它。它有助于我们比较这些值之间的差异。在R中,我们可以将dplyr包的group_by和mutate函数与lag一起使用。

示例

请看以下数据帧-

> x<-rep(c("S1","S2","S3","S4","S5"),times=4)

> y<-rnorm(20)

> df2<-data.frame(x,y)

> df2

输出结果

   x    y

1 S1 -0.2648554

2 S2 -1.6024447

3 S3 -0.3668267

4 S4 0.6439787

5 S5 1.9406125

6 S1 1.8398485

7 S2 1.5151748

8 S3 -0.7975164

9 S4 -1.4744469

10 S5 -0.4300237

11 S1 -1.2181901

12 S2 -0.9504064

13 S3 1.0594684

14 S4 -0.3190330

15 S5 -0.4186285

16 S1 0.2418591

17 S2 0.4273363

18 S3 1.2725779

19 S4 0.1008520

20 S5 0.0362863

> df2%>%group_by(x)%>%mutate(Difference=y-lag(y,default=first(y)))

# A tibble: 20 x 3

# Groups: x [5]

输出结果

   x       y    Difference

<fct>    <dbl>    <dbl>

1 S1    -0.265       0

2 S2    -1.60       0

3 S3    -0.367       0

4 S4    0.644       0

5 S5    1.94       0

6 S1    1.84       2.10

7 S2    1.52       3.12

8 S3    -0.798    -0.431

9 S4    -1.47    -2.12

10 S5    -0.430    -2.37

11 S1    -1.22    -3.06

12 S2    -0.950    -2.47

13 S3    1.06       1.86

14 S4    -0.319    1.16

15 S5    -0.419    0.0114

16 S1    0.242    1.46

17 S2    0.427    1.38

18 S3    1.27    0.213

19 S4    0.101    0.420

20 S5    0.0363    0.455

以上是 如何在R数据帧中按组找到每行的值与上一行的差? 的全部内容, 来源链接: utcz.com/z/316263.html

回到顶部