如何在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
热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短