如何使用R对数据框中的多个列进行分组并执行聚合函数

时间:2016-06-05 14:49:54

标签: r dataframe group-by dplyr aggregate-functions

我有一个包含以下定义列的数据框。我提供了一组示例,与此类似,我有许多国家有贷款金额和性别变量

      country          loan_amount          gender 
1      Austia              175                F        
2      Austia              100                F        
3      Austia              825                M        
4      Austia              175                F        
5      Austia             1025                M        
6      Austia              225                F        

在这里,我需要按国家/地区进行分组,然后针对每个国家/地区,我需要在新列中按性别计算贷款百分比,以便新列将具有该国家贷款总额的男性百分比以及贷款总额中的女性百分比为那个国家。我需要做两个group_by函数,首先将所有国家组合在一起,然后在该组性别之后计算贷款百分比。

    Total loan amount = 2525
     female_prcent = 175+100+175+225/2525 = 26.73
     male_percent = 825+1025/2525 = 73.26

输出应如下:

      country            female_percent   male_percent 
1      Austia              26.73            73.26        

我想在R中尝试这个。我尝试了下面的函数,但是我的R会话没有产生任何结果而且它正在终止。

  df %>%
  group_by(country, gender) %>%
  summarise_each(funs(sum))

有人可以帮我实现这个输出吗?我认为这可以通过使用dplyr函数来实现,但我很感兴趣。

1 个答案:

答案 0 :(得分:1)

我们可以尝试questionr包中的加权表:

library(questionr)
with(df, wtd.table(country, gender, weights = round(100 * loan_amount/sum(loan_amount), 2)))

           F     M
Austia 26.73 73.26