Я хочу сгруппировать свой df по трем столбцам и добавить новую строку, которая будет суммой четвертого столбца.
Мои данные выглядят как
fc <- c("F", "F", "E", "E", "TF", "TF")
group_code <- c("Egg_x", "Egg_y", "Egg_x", "Egg_y", "Egg_x", "Egg_y")
id <- c(1, 1, 1, 1, 1, 1)
value <- c(2, 21, 4, 3, 20, 15)
df <-data.frame(cbind(fc, group_code, id, value))
> df
fc group_code id value
1 F Egg_x 1 2
2 F Egg_y 1 21
3 E Egg_x 1 4
4 E Egg_y 1 3
5 TF Egg_x 1 20
6 TF Egg_y 1 15
В этом примере я хочу создать новую группу, которая будет включать в себя Egg_x
и Egg_y
, я могу сделать это с помощью df$group <- sub('\\_.*', '', df$group_code)
,у нас есть
> df
fc group_code id value main_group
1 F Egg_x 1 2 Egg
2 F Egg_y 1 21 Egg
3 E Egg_x 1 4 Egg
4 E Egg_y 1 3 Egg
5 TF Egg_x 1 20 Egg
6 TF Egg_y 1 15 Egg
Я хочу добавить новую строку для каждого значения столбца fc
, по которому я группируюсь по fc, id и main_group и получаю сумму столбца значений.
Мой конечный df должен выглядеть следующим образом:
> df
fc group_code id value main_group
1 F Egg_x 1 2 Egg
2 F Egg_y 1 21 Egg
3 F Egg 1 23 Egg
4 E Egg_x 1 4 Egg
5 E Egg_y 1 3 Egg
6 E Egg 1 7 Egg
7 TF Egg_x 1 20 Egg
8 TF Egg_y 1 15 Egg
9 TF Egg 1 35 Egg
В приведенном выше df каждой третьей строке указан элемент value в сумме двух предыдущих элементов.
Спасибо