2017-08-21 134 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