Сжатие групп из нескольких строк в одну строку с сохранением значений с наибольшим x в R? - PullRequest
1 голос
/ 26 июня 2019

У меня есть фрейм данных, который включает несколько строк данных для каждого времени, и я хотел бы сгруппировать по времени, чтобы создать сжатый фрейм данных.Столбцы 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 Ответ

2 голосов
/ 26 июня 2019

Можно было бы сгруппировать по «времени», «группе» и slice строкам, в которых значение «x» равно max (which.max)

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