我有一个数据框,每次包含多行数据,并且想按时间分组以创建压缩数据框。 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
答案 0 :(得分:2)
一种选择是将'x'的值为slice
(max
)的行按'time','group'和which.max
分组
library(dplyr)
df1 %>%
group_by(time, group) %>%
slice(which.max(x))