dplyr-分组计数和除法

时间:2019-06-07 17:53:56

标签: r dataframe

我尝试了在线搜索,但找不到方法来进行理算和划分。

我想要完成的是,Geslacht的所有值都是按Operatie计算的,并除以该Operatie中的人数(行)。因此,我希望每个Operatie的值都在0和1之间有一个比率(单个值)。 Operatie上升到100。

以代数形式df$ratio <- sum(df$Geslacht(grouped_by = "Operatie")) / n

编写

数据如下:

       Operatie Geslacht jaar_ervaring
1        1        0             5     
2        1        1             5 
3        1        0             3  
4        2        0             5 
5        2        1             5 
6        2        1             3  
x(operatie 1) == 0+1+0 = 1/3 == .333  
x(operatie 2) == 0+1+1 = 2/3 == .666
...
x(operatie 100)

我的尝试或封锁;

new_df <- df %>%
  group_by(Operatie , Geslacht ) %>%
  count()

礼物:

Operatie Geslacht     n
     <int>    <dbl> <int>
1        1        0     2
2        1        1     1
3        2        0     1
4        2        1     2

我必须在count()中指定某些内容还是需要其他函数?有森林和树木的东西。

预先感谢

解决方案:

new_df <- df %>%
  drop_na() %>% # if we want "ignore" NAs when counting
  group_by(Operatie) %>%
  summarise(ratio = sum(Geslacht)/n())

2 个答案:

答案 0 :(得分:2)

new_df <- df %>% group_by(Operatie) %>%
  summarise(ratio = sum(Geslacht)/n())

给予:

# A tibble: 2 x 2
  Operatie ratio
     <dbl> <dbl>
1        1 0.333
2        2 0.667

答案 1 :(得分:2)

Base R方法:

aggregate(df$Geslacht, list(df$Operatie), mean)

  Group.1         x
1       1 0.3333333
2       2 0.6666667