在R汇总数据框中添加一个相对于一个因子的比例

时间:2018-02-28 00:22:15

标签: r summarize

我使用R'汇总'创建了汇总数据框。功能,包括两个因素 - "公司规模" &安培; "案例状态" - 以及"公司规模"的每个组合的记录数量(n)。和"案件状态"。公司规模有三个级别,案例状态有四个级别,因此我在此汇总数据框中总共有12行。以下是汇总数据框的脚本(包括前面的' group by'函数):

df <- group_by(df, df$Firm.Size, df$`Case Status`)
summ_firm <- summarize(df, num_records = n())

我想在汇总数据框中创建一个新列,该列提供单个行记录数的一部分(即给定组合&#34;公司规模&#34的记录数量;以及&#34;案例状态&#34;)关于相关公司规模的总记录。

换句话说,如果&#34;小公司&#34;总共有100条记录和包含&#34; Small Firms&#34;那是&#34;认证&#34; (案例状态的级别)有20条记录,我希望这个新列用0.2填充该行。

以下是&#39; summ_firm&#39;的实际输出。在帖子前面提到过。

  `df_nona_firm$Firm.Size` `df_nona_firm$\`Case Status\`` num_records
   <fct>                    <fct>                                <int>
 1 0-99 Employees           Certified                            32565
 2 0-99 Employees           Certified-Expired                    24493
 3 0-99 Employees           Denied                                6346
 4 0-99 Employees           Withdrawn                             3155
 5 1,000+ Employees         Certified                            63649
 6 1,000+ Employees         Certified-Expired                    51981
 7 1,000+ Employees         Denied                                3532
 8 1,000+ Employees         Withdrawn                             4078
 9 100-999 Employees        Certified                            24752
10 100-999 Employees        Certified-Expired                    19095
11 100-999 Employees        Denied                                2830
12 100-999 Employees        Withdrawn                             2537

1 个答案:

答案 0 :(得分:1)

这应该有效:

library(dplyr)
summ_firm <- df %>%
  group_by(Firm.Size, Case.Status) %>%
  summarize(records = n()) %>%
  group_by(Firm.Size) %>%
  mutate(proportion = records/sum(records))