在表中组合计数和百分比(分类变量)

问题描述 投票:0回答:1

我正在使用 R markdown 和 qwraps2 以及 dplyr 包

library(dplyr)
library(qrwaps2)

我有一个包含 1 个分类变量和 2 个数值变量的数据集,我想以以下格式获取分类变量的计数和百分比:计数(百分比 %)

数据集如下:

structure(list(SIDE = c("Left", "Right", "Left", "Right", "Left", 
"Right", "Right", "Right", "Right", "Right", "Left", "Left", 
"Left", "Right", "Left", "Right", "Right", "Left", "Left", "Left", 
"Left", "Right", "Right"), PREOP_mTFA = c(163.5, 164.9, 168.7, 
170.3, 162.8, 166.7, 171, 165.9, 165.9, 170.8, 170.5, 173.3, 
167.7, 170.7, 159, 170.9, 168.2, 171.2, 164, 166.6, 169.1, 171.2, 
175.9), PREOP_mLDFA = c(86, 95, 90, 86, 92, 89, 92, 96, 90, 86, 
89, 87, 93, 90, 98, 89, 90, 88, 92, 91, 89, 90, 88)), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -23L))

我使用以下代码来获取计数和百分比,但它们是分开的。

DLO_TEST %>% group_by(SIDE) %>% 
  summarise(count = n())
DLO_TEST %>% group_by(SIDE) %>% 
  summarise(percent = 100 * n() / nrow(DLO_TEST))

我想要一个格式为计数的输出,然后括号中带有百分号%的百分比:计数(百分比%)。如何修改代码来做到这一点?

我试过了

qwraps2::n_perc(DLO_TEST$SIDE == Right) 

这不起作用。我认为它仅适用于数字变量。

r dplyr qwraps2
1个回答
0
投票

也许是这样的?

DLO_TEST |>
  summarize(
    count = n(),
    .by = SIDE
  ) |>
  mutate(
    percent = scales::percent_format(accuracy = 0.1)(count / sum(count)),
    your_string = glue::glue("{count} ({percent})")
  )
# # A tibble: 2 × 4
#   SIDE  count percent your_string
#   <chr> <int> <chr>   <glue>     
# 1 Left     11 47.8%   11 (47.8%) 
# 2 Right    12 52.2%   12 (52.2%) 

如果您有更多分类变量,那么这种确切的格式没有意义,因为它们可能具有不同的级别数。您可以先将数据转换为长格式,以便它们全部位于一列中。您可能还对

table1
感兴趣,它在自动化表格方面做得很好。

© www.soinside.com 2019 - 2024. All rights reserved.