R按列将数据表转换为百分比表



我正在尝试将此表按列转换为百分比表。

100
2021年1月 2021年2月
A 50 100
B 50 150
C 100

您可以使用dplyr::mutate_if()scales::percent:

x %>% 
mutate_if(endsWith(names(.),"2021"),function(x) x / sum(x)) %>% 
mutate_if(endsWith(names(.),"2021"),scales::percent, accuracy = 0.01)

输出:

class Jan2021 Feb2021
1     A  25.00%  28.57%
2     B  25.00%  42.86%
3     C  50.00%  28.57%

您可以使用across-

library(dplyr)
x %>%  mutate(across(-class, ~paste(round(prop.table(.) * 100, 2), '%')))
#  class Jan2021 Feb2021
#1     A    25 % 28.57 %
#2     B    25 % 42.86 %
#3     C    50 % 28.57 %

或基础R-中的lapply

x[-1] <- lapply(x[-1], function(x) paste(round(prop.table(x) * 100, 2), '%'))
library(janitor)
x %>%
adorn_percentages("col") %>%
adorn_pct_formatting(digits = 2)

class Jan2021 Feb2021
A  25.00%  28.57%
B  25.00%  42.86%
C  50.00%  28.57%

最新更新