2017-08-21 135 views
0

我正在尝试使用dplyr根据其他列中的变量对一列进行乘法和求和。基于条件的R 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,其中总和== 0)+((n,其中总和== 1)/ 2))/(所有n的总和)。

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

感谢您的任何帮助。

+0

那么这个样本数据的期望输出是多少?我无法从你的描述中看出价值应该是什么。你想总结还是改变? – MrFlick

回答

0

这是你想要的吗?

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 
+0

或者用少一点的代码mutate(Rate =((n [sum == 0] + n [sum == 1])/ 2)/ sum(n)) – biomiha

+0

@biomiha他有多地点 – Wen