如何在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 y1 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