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

为什么dplyr中的mutate函数不能提供百分比减少?,r,dplyr,rounding,percentage,mutate,R,Dplyr,Rounding,Percentage,Mutate,我正在研究一个名为top10的数据框架,希望了解2014年至2017年的下降百分比: 减少百分比的公式为差值/总计2014*100 原始dftop10: Zip Total2014 Total2017 Difference 1 ZCT 44108 25122 22048 3074 2 ZCTA5 43607 23547 21560 1987 3 ZCTA5 44

我正在研究一个名为top10的数据框架,希望了解2014年至2017年的下降百分比:

减少百分比的公式为差值/总计2014*100

原始dftop10:

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


正如您所注意到的,下降百分比仍然显示为1.22%,而不是12.2%。另外,我如何在mutate中将2位小数取整?

百分比是格式化数字的一种方法。例如,可以使用比例来执行此操作:

数据
圆桌会议,2@locoGris但是我怎样才能得到减少的百分比呢?为什么它显示为1.22,而它应该是12.2我无法重新创建此问题。以下是我的作品:df@Peter_Evan非常感谢你的作品。您能解释一下我如何取消对以前创建的不正确列的变异吗?@codeybanks如果您能够创建您想要的列,但仍有一些列不希望出现在数据帧中,只需使用select in dplyr直接删除它们,并命名要保留的列,或使用NULL删除它们,即top10$DELESS
top10 <- mutate(top10,decrease = (Difference/Total2014)*100)
top10 <- mutate(top10,decreasepc = decrease*100)
             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
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"
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)