我有一个24.341个6个变量的数据框,首先由Point.ID排序,然后按Day排序,如下所示:
Point.ID Day E N Z
P1 2012-03-16 676620.5 4090699 26.82750
P1 2012-03-17 676620.5 4090699 26.82698
P1 2012-03-18 676620.5 4090699 26.82689
P10-Ref1 2012-03-16 676491.8 4090636 76.16396
P10-Ref1 2012-03-17 676491.8 4090636 76.16450
P10-Ref1 2012-03-18 676491.8 4090636 76.16519
P10-Ref1 2012-03-19 676491.8 4090636 76.16646
P11 2012-03-16 676496.7 4090619 75.77662
P11 2012-03-17 676496.7 4090619 75.77746
P11 2012-03-18 676496.7 4090619 75.77769
P11 2012-03-19 676496.7 4090619 75.77887
每个点的E,N和Z观测值不同,但彼此相同(E,N和Z)。
我想从每个Point.ID变量级别的第一个变量E,N和Z中减去以下观察结果,并将结果添加到新变量中的data.frame。
经过长时间的研究和尝试使用dplyr,ddply等后,我做了以下操作,当我绘制结果时,它似乎运行良好,但我需要专家的确认:
daily_means$E_disp <- ave(daily_means$E, daily_means$Point.ID,
FUN = function(x) x[1] - x)
daily_means$N_disp <- ave(daily_means$N, daily_means$Point.ID,
FUN = function(x) x[1] - x)
daily_means$Z_disp <- ave(daily_means$Z, daily_means$Point.ID,
FUN = function(x) x[1] - x)
随意提出一个更好的解决方案,我知道它存在,但由于我的背景短暂,我无法弄明白。