Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R汇总数据框中添加与一个因子相关的比例_R_Summarize - Fatal编程技术网

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

在R汇总数据框中添加与一个因子相关的比例,r,summarize,R,Summarize,我使用R的“汇总”功能创建了一个汇总数据框架,包括两个因素——公司规模和案例状态——以及公司规模和案例状态的每个组合的记录数n。公司规模有三个级别,案例状态有四个级别,所以我在这个汇总数据框架中总共有12行。以下是汇总数据框的脚本,包括前面的“分组依据”函数: df <- group_by(df, df$Firm.Size, df$`Case Status`) summ_firm <- summarize(df, num_records = n()) 我想在汇总数据框中创建一个新列

我使用R的“汇总”功能创建了一个汇总数据框架,包括两个因素——公司规模和案例状态——以及公司规模和案例状态的每个组合的记录数n。公司规模有三个级别,案例状态有四个级别,所以我在这个汇总数据框架中总共有12行。以下是汇总数据框的脚本,包括前面的“分组依据”函数:

df <- group_by(df, df$Firm.Size, df$`Case Status`)
summ_firm <- summarize(df, num_records = n())
我想在汇总数据框中创建一个新列,该列提供单个行记录数的比例,即给定公司规模和案例状态组合的记录数相对于相关公司规模的总记录数

换句话说,如果小公司总共有100条记录,并且包含案例状态认证级别的小公司记录的行有20条记录,那么我希望该行的新列填充0.2

这是文章前面提到的“summ_公司”的实际产出

  `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
这应该起作用:

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

请将dputsumm_公司的输出或子集粘贴到您的问题中,以便我们可以轻松访问您的数据。太好了-非常感谢。我就是这么做的,而且效果很好:sum_firm%group_by firm.Size,Case.Status%>%summarsen=n%>%mutateproportion=n/sumn想知道R是否知道在比例计算中使用group_by中的第一个变量作为分母?不会的。您必须明确指定查看第二个group_by语句