R语言 按行向弹性表列添加百分比

0ve6wy6x  于 2023-03-05  发布在  其他
关注(0)|答案(2)|浏览(134)

假设我有一个按多个组列出的盘点行,以及一个所有组的合计行。如何使用弹性表在同一列中按行添加百分比?
例如,在这个简单的示例中,setosa的列将显示为“45(31%)":

library(dplyr)
library(datasets)
library(janitor)
library(flextable)
data(iris)

df<- iris %>%
  group_by(Species) %>%
  dplyr::summarize("Big Sepals"=sum(Sepal.Length>4.5)) %>%
  adorn_totals("row")
flextable(df)
ujv3wf0j

ujv3wf0j1#

要向现有可见列添加内容,请使用append_chunks()(使用prepend_chunks()可在现有内容之前插入内容):

library(dplyr)
library(flextable)

df<- iris %>%
  group_by(Species) %>%
  dplyr::summarize("Big Sepals"=sum(Sepal.Length>4.5)) %>%
  mutate(Percentage = `Big Sepals`/sum(`Big Sepals`)*100)

flextable(df, col_keys = c("Species", "Big Sepals")) |> 
  append_chunks(j = "Big Sepals",
                as_i(" ("), 
                as_i(Percentage), 
                as_i("%)")) |> 
  autofit()

bzzcjhmw

bzzcjhmw2#

这是你要找的吗?

library(dplyr)
library(flextable)

iris %>% 
  group_by(Species) %>% 
  summarise(`Big Sepals` = sum(Sepal.Length > 4.5)) %>% 
  mutate(Percentage = `Big Sepals`/sum(`Big Sepals`)*100) %>% 
  mutate(Combined = paste0(`Big Sepals`, " (",round(Percentage, digits = 0), "%)"))

#> # A tibble: 3 x 4
#>   Species    `Big Sepals` Percentage Combined
#>   <fct>             <int>      <dbl> <chr>   
#> 1 setosa               45       31.0 45 (31%)
#> 2 versicolor           50       34.5 50 (34%)
#> 3 virginica            50       34.5 50 (34%)

创建于2023年2月28日,使用reprex v2.0.2

相关问题