2017-04-17 78 views
0

我有一个这样的数据框,列出了每天的计数。将多个频率/计数列转换为百分比

**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% 

任何想法如何做到这一点,而无需手动每次转换一次列?

谢谢!

回答

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% 
+0

我想这样的作品的格式,但它实际上并没有计算百分比不是吗? –

+0

你是指列百分比?请澄清 – mtoto

+0

是的。抱歉。我现在看到它的例子有缺陷。我想计算每种颜色在星期一,星期二,星期三等的百分比。每列应为100%。 –