每个类别两列的数学运算分组总和

时间:2019-07-01 14:49:20

标签: r grouping

我尝试考虑两个不同列中的值,按组进行百分比计算。

我已经使用dplyr来对数据进行分组,然后进行数学运算。我输入的命令错误,因为所有组的结果都是相同的,我想我的代码仅显示了一个总百分比,而不是按组显示。

> x <- data.frame("code"=c("a","a","b","b","a","b"),"home" = c(1,1,1,1,1,1),
+                 "trap" = c(0,1,0,1,0,1))
> x
  code home trap
1    a    1    0
2    a    1    1
3    b    1    0
4    b    1    1
5    a    1    0
6    b    1    1
> x %>% 
+   group_by(code) %>% 
+   mutate(perc=(sum(trap)/sum(home)))
# A tibble: 6 x 4
# Groups:   code [2]
  code   home  trap  perc
  <fct> <dbl> <dbl> <dbl>
1 a         1     0   0.5
2 a         1     1   0.5
3 b         1     0   0.5
4 b         1     1   0.5
5 a         1     0   0.5
6 b         1     1   0.5
> 

这个想法是获得关于家庭的陷阱权重(在同一组的所有行中都应该相同)

我要获取此数据框:

  code   home  trap  perc
  <fct> <dbl> <dbl> <dbl>
1 a         1     0   0.333
2 a         1     1   0.333
3 b         1     0   0.666
4 b         1     1   0.666
5 a         1     0   0.333
6 b         1     1   0.666
> 

1 个答案:

答案 0 :(得分:0)

我们只需要List

mean

不同的值可能是由于x %>% group_by(code) %>% dplyr::mutate(perc = mean(trap)) # A tibble: 6 x 4 # Groups: code [2] # code home trap perc # <fct> <dbl> <dbl> <dbl> #1 a 1 0 0.333 #2 a 1 1 0.333 #3 b 1 0 0.667 #4 b 1 1 0.667 #5 a 1 0 0.333 #6 b 1 1 0.667 summarise而不是plyr::summarise所屏蔽(当两个软件包都装入全局环境时)。要解决此问题,请指定dplyr::summarise或从仅加载dplyr::的新会话开始

dplyr