我有一个这样的数据框,按日列出了计数。
**Color** **Monday** **Tuesday** **Wednesday**
Green 2 3 1
Orange 3 5 5
Blue 1 3 2
Red 4 5 1
我想要达到的是这样的。列是百分比。
**Color** **Monday** **Tuesday** **Wednesday**
Green 20% 20% 10%
Orange 30% 30% 60%
Blue 10% 20% 20%
Red 40% 30% 10%
关于如何在不手动转换一次列的情况下如何执行此操作的任何想法?
谢谢!
答案 0 :(得分:1)
您可以将mutate_if()
与自定义功能结合使用,例如:
percent_mean <- function(x){
m <- round(x/sum(x),2)*100
return(paste0(m, sep = "%"))
}
library(dplyr)
df %>% mutate_if(is.numeric, funs(percent_mean))
# Color Monday Tuesday Wednesday
#1 Green 20% 19% 11%
#2 Orange 30% 31% 56%
#3 Blue 10% 19% 22%
#4 Red 40% 31% 11%