我正在尝试将此表按列转换为百分比表。
2021年1月 | 2021年2月 | |
---|---|---|
A | 50 | 100 |
B | 50 | 150 |
C | 100 | 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%