为什么dplyr中的mutate函数不提供百分比减少?

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

我正在研究名为top10的数据框,并希望了解2014年至2017年的减少百分比:

降低%的公式是Difference/Total2014 * 100

原始df(top10):

           Zip       Total2014 Total2017   Difference  
1    ZCT   44108     25122     22048       3074    
2    ZCTA5 43607     23547     21560       1987    
3    ZCTA5 44104     22479     20541       1938

输入

top10 <- mutate(top10,decrease = (Difference/Total2014)*100)
top10 <- mutate(top10,decreasepc = decrease*100)

两种情况下的Repex输出:

             Zip Total2014 Total2017 Difference    decreasepc      decrease
1    ZCT   44108     25122     22048       3074  1.223629e+02  1.223629e-01
2    ZCTA5 43607     23547     21560       1987  8.438442e+01  8.438442e-02
3    ZCTA5 44104     22479     20541       1938  8.621380e+01  8.621380e-02

当您注意到减少%仍然显示为1.22而不是12.2%。另外我怎样才能在mutate中以2位小数向上舍入?

r dplyr rounding percentage mutate
1个回答
0
投票

百分比是格式化数字的一种方式。你可以这样做,例如,使用scales

library(dplyr)
top10 <- mutate(top10, decrease = (Difference/Total2014))
top10 <- mutate(top10, decreasepct = scales::percent(decrease))

> top10
     ID   Zip Total2014 Total2017 Difference   decrease decreasepct
1   ZCT 44108     25122     22048       3074 0.12236287     12.24%
2 ZCTA5 43607     23547     21560       1987 0.08438442      8.44%
3 ZCTA5 44104     22479     20541       1938 0.08621380      8.62%

请注意,将数字格式化为百分比会将列转换为字符:

> class(top10$decreasepc)
[1] "character"

Data

top10 <- read.table(text = "
ID Zip Total2014 Total2017 Difference  
ZCT 44108 25122 22048 3074
ZCTA5 43607 23547 21560 1987
ZCTA5 44104 22479 20541 1938", head = TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.