我正在尝试使用 ggplot2 包在 R 中制作瀑布图。由于它没有默认模板(我想坚持使用 ggplot2 包),我必须自己准备数据。
我正在学习本教程,但我想在我的绘图中包含小计,因此需要对数据集中的某些行进行汇总,并且小计行应出现在数据框的中间
所以我有一张这样的表:
Position Value
1 52
2 12
3 -14
4 -25
5 -10
6 60
7 -30
我希望它变成这样:
Position Value
1 52
2 12
Subt1 64
3 -14
4 -25
5 -10
Subt2 15
6 60
7 -30
Subt3 45
由于我的列表中没有太多位置,一旦我知道它是如何工作的,我就可以手动进行映射(Subt1 = 1 + 2; Subt2 = Subt1 + 3 + 4 + 5; ...
)。不过,我不知道如何将总和动态输入到我的列表中。之后也可以手动完成订购。
谢谢你们!
一个选项group_split
基于在"值"列的sign
上用rleid
创建的分组向量,然后遍历data.frame
list
,最后add_row
sum
"值">
library(tidyverse)
library(tibble)
library(data.table)
df1 %>%
group_split(grp = rleid(sign(Value)), keep = FALSE) %>%
map_df(~ .x %>% add_row(Position = 'Subt1', Value = sum(.$Value)))