Ich möchte das Verhältnis zwischen aufeinander folgenden Werten innerhalb von Gruppen berechnen. Es ist für Unterschiede leicht mit diff
:Berechnen Sie das gruppenweise Verhältnis von aufeinanderfolgenden Werten in R
mdata <- data.frame(group = c("A","A","A","B","B","C","C"), x = c(2,3,5,6,3,7,6))
mdata$diff <- unlist(by(mdata$x, mdata$group, function(x){c(NA, diff(x))}))
mdata
group x diff
1 A 2 NA
2 A 3 1
3 A 5 2
4 B 6 NA
5 B 3 -3
6 C 7 NA
7 C 6 -1
Gibt es eine entsprechende Funktion Verhältnisse zu berechnen? Gewünschte Ausgabe wäre:
group x ratio
1 A 2 NA
2 A 3 1.5000000
3 A 5 1.6666667
4 B 6 NA
5 B 3 0.5000000
6 C 7 NA
7 C 6 0.8571429
Perfektem Anwendungsfall für 'Verzögerung()' :) – hadley