如何在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 分别祝福语简短搞笑英文
18 生日广州男生祝福语简短