R dplyr总和基于条件

时间:2017-08-21 20:59:41

标签: r dplyr

我正在尝试使用dplyr根据其他列中的变量对一列进行乘法和求和。

location = c("LBJ", "LBJ", "LBJ","LBJ") 
sample = c("100", "100", "100","100") 
sum = c(0,1,2,3) 
n = c(200,100,20,24)
df = data.frame(location, sample, sum,n)
df
  location sample sum   n
1      LBJ    100   0 200
2      LBJ    100   1 100
3      LBJ    100   2  20
4      LBJ    100   3  24

我想计算((n其中sum == 0)+((n其中sum == 1)/ 2))/(所有n的总和)。

我将有多个位置和样本应该独立行动,所以我想在dplyr中使用group_by命令。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这是你想要的吗?

library(dplyr)

df%>%group_by(location)%>%dplyr::mutate(Rate=mean(n[which(sum<=1)])/sum(n))

# A tibble: 4 x 5
# Groups:   location [1]
  location sample   sum     n      Rate
    <fctr> <fctr> <dbl> <dbl>     <dbl>
1      LBJ    100     0   200 0.4360465
2      LBJ    100     1   100 0.4360465
3      LBJ    100     2    20 0.4360465
4      LBJ    100     3    24 0.4360465