将多行分组压缩为单行,以保持R中x最高的值?

时间:2019-06-26 17:05:03

标签: r aggregate cumsum

我有一个数据框,每次包含多行数据,并且想按时间分组以创建压缩数据框。 a和b列是其他列的累加总和,应保持每个时间组x最高的行中的值,而不是总和或平均值。

x   time  group  value  cumsum_A cumsum_B
1     0     A     0        0        0
2     0     B     0        0        0
3     0     A     0        0        0
4     1     A     0        0        0
5     1     B     1        0        1
6     1     B     0        0        1
7     2     B     1        0        2
8     2     A     1        1        2
9     2     A     1        2        2
10    2     A    -1        1        2
11    3     A     0        1        2
12    3     B     1        1        3

理想的结果如下:

x   time  group  value  cumsum_A cumsum_B
3     0     A     0        0        0
6     1     B     0        0        1
10    2     A    -1        1        2
12    3     B     1        1        3

1 个答案:

答案 0 :(得分:2)

一种选择是将'x'的值为slicemax)的行按'time','group'和which.max分组

library(dplyr)
df1 %>%
   group_by(time, group) %>%
   slice(which.max(x))