首页 > 解决方案 > 将多行组压缩为单行,保持 R 中 x 最高的值?

问题描述

我有一个数据框,每次都包含多行数据,并且想按时间分组以创建一个精简的数据框。列 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

标签: raggregatecumsum

解决方案


一个选项是按“时间”、“组”和slice“x”值为max( which.max)的行进行分组

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

推荐阅读