Ich habe einen Datensatz mit "Athleten" spielt "Matches" ("Match" == 1) auf zufällige "Dates". Zum Beispiel:Zeilenpositionen relativ zu einer bestimmten Bedingung in R
df <- data.frame(matrix(nrow = 80, ncol = 5))
colnames(df) <- c("Athlete", "Date", "Match", "DaysAfter", "DaysBefore")
df[,"Athlete"] <- c(rep(1, 20), rep(2,20), rep(3, 20), rep(4, 20))
df[,"Date"] <- rep(1:20, 4)
df[,"Match"] <- c(0,0,0,0,1,0,0,1,0,0)
Ich möchte zwei Variablen machen:
df$DaysAfter <- # number of days after last "Match" (for each "Athlete").
df$DaysBefore <- # number of days before next "Match" (for each "Athlete").
PS! Wenn "Match" == 1, dann sollten "DaysAfter" und "DaysBefore" 0 sein. Wenn es keine Übereinstimmungen vorher in "DaysAfter" und danach in "DaysBefore" gibt, zeige NA (siehe Beispiel).
Ich möchte der Datensatz wie folgt aussehen:
Ath Dat Mat DA DB
1 1 0 NA -4
1 2 0 NA -3
1 3 0 NA -2
1 4 0 NA -1
1 5 1 0 0
1 6 0 1 -2
1 7 0 2 -1
1 8 1 0 0
1 9 0 1 -4
1 10 0 2 -3
1 11 0 3 -2
1 12 0 4 -1
1 13 1 0 0
1 14 0 1 -2
1 15 0 2 -1
1 16 1 0 0
1 17 0 1 NA
1 18 0 2 NA
1 19 0 3 NA
1 20 0 4 NA
2 1 0 NA -4
2 2 0 NA -3
etc.
Wie kann ich das erreichen?
Dies zeigt nicht genau das gewünschte Ergebnis. Zeile 19 und 20 haben ein falsches Ergebnis.NA wäre korrekt 19: 1 19 0 1 NA 1 -2 20: 1 20 0 2 NA 2 -1 21: 2 1 0 NA -4 NA -4 22: 2 2 0 NA -3 NA - 3 –
@Otto_K Können Sie bitte bestätigen, ob der aktualisierte Ausgang korrekt ist – akrun
Ja, jetzt ist es korrekt. –