首页 > 解决方案 > 有没有计算百分比的R函数?

问题描述

我有一个名为 crash_stats_TA 的 DF,如下所示。

TA_code TA_name 崩溃
061 灰色的 126
062 布勒 345
063 韦斯特兰 24
064 提马鲁 112

我正在尝试使用 mutate 创建一个名为 crash_perc 的新列。这是我到目前为止所尝试的:

library(dplyr) # data manipulation

crash_stats_TA <- crash_stats_TA %>%
  group_by(TA_code, TA_name) %>%
  mutate(crashes_perc = round(Crashes/sum(Crashes, na.rm = T)*100,2))

但是,这会返回一个新的 crash_perc 列,每个 TA_code 和 TA_name 的值为 100,因此每个区域都有 100。像这样:

df

这会是什么原因。不太确定如何正确执行此步骤

标签: rdplyrpercentage

解决方案


使用scales::percent,

crash %>%
  mutate(crashes_perc = scales::percent(Crashes/sum(Crashes, na.rm = T)))

  TA_code TA_name  Crashes crashes_perc
    <int> <chr>      <int> <chr>       
1      61 Grey         126 20.8%       
2      62 Buller       345 56.8%       
3      63 Westland      24 4.0%        
4      64 Timaru       112 18.5% 

group_by如果每组有足够的样本量,则添加。


推荐阅读