将多行的组压缩成单行以维护 R 中 x 最高的值?
Condensing groups of multiple rows into single row maintaining the values with the highest x in R?
我有一个数据框,每次都包含多行数据,我想按时间分组以创建一个压缩数据框。 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
一个选项是按 'time'、'group' 和 slice
对 'x 值为 max
(which.max
) 的行进行分组
library(dplyr)
df1 %>%
group_by(time, group) %>%
slice(which.max(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
一个选项是按 'time'、'group' 和 slice
对 'x 值为 max
(which.max
) 的行进行分组
library(dplyr)
df1 %>%
group_by(time, group) %>%
slice(which.max(x))