dplyr:在相同位置,不同日期测量的值之间的差异

时间:2015-10-21 21:21:08

标签: r dplyr

我正在使用下面的数据集。

Date    Depth   Magnitude
9/11/14 0.1     19.64
9/11/14 1       19.64
9/11/14 2       19.63
9/11/14 4       19.57
9/11/14 5.5     19.3
9/11/14 7       16.5
9/11/14 9       11.31
9/11/14 11      10.11
9/11/14 13      9.31
9/11/14 15      9.03
9/11/14 16.9    9.03
9/16/14 0.1     19.87
9/16/14 1       19.17
9/16/14 2       18.91
9/16/14 4       18.18
9/16/14 5.5     17.53
9/16/14 7       14.29
9/16/14 9       10.81
9/16/14 11      9.88
9/16/14 13      9.22
9/16/14 15      9.11
9/16/14 16.9    8.98

如您所见,在两个不同日期的给定深度处存在值。我想用dplyr做的是计算每个深度的两个日期之间“幅度”的变化。例如,在深度0.1处,幅度变化19.87 - 19.64 = 0.23。我想为所有深度做这件事。

我可以使用中间变量来做到这一点,但它非常笨重:

FirstDate <- MyData %>% filter(Date == "9/11/14")
SecondDate <- MyData %>% filter(Date == "9/16/14")
SecondDate$Magnitude - FirstDate$Magnitude 

我确信有更优雅的dplyr式方式来实现这一目标。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您可以按Depth

运行MyData %>% group_by(Depth) %>% summarise(diff(Magnitude)) # Depth diff(Magnitude, 1) # (dbl) (dbl) # 1 0.1 0.23 # 2 1.0 -0.47 # 3 2.0 -0.72 # 4 4.0 -1.39 # 5 5.5 -1.77 # 6 7.0 -2.21 # 7 9.0 -0.50 # 8 11.0 -0.23 # 9 13.0 -0.09 # 10 15.0 0.08 # 11 16.9 -0.05
if(actor.isRemoved) {
   // enter code here
}