我正在研究名为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位小数向上舍入?
百分比是格式化数字的一种方式。你可以这样做,例如,使用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"
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)