如何在R中进行计算后组合数据帧的行

时间:2017-03-21 07:26:50

标签: r dataframe

我如何从第5行的Read中减去第1行中的Read并将其作为第1行中Read的值。然后重复这样从第6行中减去第2行中的Read,依此类推?然后将每组4行(相同的时间戳)加起来并用一个时间戳组成一行,这是所有四行的总和?

                  Time Meter     Read
1   2017-03-20 14:15:00     1 22582640
2   2017-03-20 14:15:00     2   571893
3   2017-03-20 14:15:00     3 45906886
4   2017-03-20 14:15:00     4  1890581
5   2017-03-20 14:20:00     1 22582640
6   2017-03-20 14:20:00     2   571893
7   2017-03-20 14:20:00     3 45906993
8   2017-03-20 14:20:00     4  1890581
9   2017-03-20 14:25:00     1 22582640
10  2017-03-20 14:25:00     2   571893
11  2017-03-20 14:25:00     3 45907206
12  2017-03-20 14:25:00     4  1890581
13  2017-03-20 14:30:00     1 22582640
14  2017-03-20 14:30:00     2   571893
15  2017-03-20 14:30:00     3 45907206
16  2017-03-20 14:30:00     4  1890581

数据输入是:

structure(list(Time = structure(c(1490037300, 1490037300, 1490037300, 
1490037300, 1490037600, 1490037600, 1490037600, 1490037600, 1490037900, 
1490037900, 1490037900, 1490037900, 1490038200, 1490038200, 1490038200, 
1490038200), class = c("POSIXct", "POSIXt"), tzone = ""), Meter = c(1, 
2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4), Read = c(22582640L, 
571893L, 45906886L, 1890581L, 22582640L, 571893L, 45906993L, 
1890581L, 22582640L, 571893L, 45907206L, 1890581L, 22582640L, 
571893L, 45907206L, 1890581L)), .Names = c("Time", "Meter", "Read"
), row.names = c(NA, 16L), class = "data.frame")

我想要的结果是:

1   2017-03-20 14:15:00     1 107
2   2017-03-20 14:20:00     1 213

等等。

如果不太复杂,我不需要引用Meter列。我可以删除该列,只是做一些偏移,因为格式将始终是4个条目。我得到了格式化的数据,但我不知道从哪里开始做我正在寻找的东西,因为这意味着消除了三行,我不确定这对后续计算的偏移有何影响。我想在计算中添加一个新列,但仍然无法弄清楚如何将总和推到一行。

0 个答案:

没有答案