从每个级别的第一个级别

时间:2017-06-13 11:26:23

标签: r

我有一个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)

随意提出一个更好的解决方案,我知道它存在,但由于我的背景短暂,我无法弄明白。

0 个答案:

没有答案