2017-08-21 5 views
0

Ich versuche, dplyr zu multiplizieren und eine Spalte basierend auf Variablen in anderen Spalten zu summieren.R dplyr Summe basierend auf Bedingungen

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 

Ich möchte berechnen ((n wo Summe == 0) + ((n wo Summe == 1)/2))/(Summe aller n).

Ich werde mehrere Standorte und Samples haben, die unabhängig voneinander arbeiten sollten, also möchte ich die group_by Befehle in dplyr verwenden.

Danke für jede Hilfe.

+0

Was ist die gewünschte Ausgabe für diese Beispieldaten? Ich kann aus Ihrer Beschreibung nicht ersehen, wie der Wert sein sollte. Versuchen Sie, zusammenzufassen oder zu mutieren? – MrFlick

Antwort

0

Wollen Sie das?

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

Oder mit etwas weniger Code 'df%>% mutieren (Rate = ((n [Summe == 0] + n [Summe == 1])/2)/Summe (n))' – biomiha

+0

@biomiha er haben mehrere Standorte – Wen

Verwandte Themen