Ich möchte eine Funktion nach Gruppen in meinem Dataframe ausführen. Die Funktion vergleicht benachbarte Zeilen, sollte jedoch für jede Gruppe "zurückgesetzt" werden. Ich habe versucht, die folgenden:Kombinieren Sie group_by() mit benutzerdefinierten Funktion oder Operation
library(dplyr)
df1 <- as.data.frame(list('x'=1:6,'y'=(1:6)^2,'z'=5:10, 'g'=c(4,4,4,5,5,5),
'h'=c('a','a','b','b','c','c')))
df1 <- group_by(df1,h) %>%
for (i in 2:nrow(df1)) {
df1$Head.Distance[i] <- with(df1, sqrt((x[i] - x[i-1])^2 +
(y[i] - y[i-1])^2 +
(z[i] - z[i-1])^2))
}
aber dies führt zu einem NULL-Wert für df1
. Wie kann ich diesen Vorgang für jede Gruppe ausführen? (Als Hinweis, sollte der Betrieb verlassen die erste Zeile NA
oder 0
.)
Dank! Genau das habe ich gesucht! –