我有一個隨機「日期」上的「運動員」在比賽中玩「匹配」(「匹配」== 1)的數據集。例如:相對於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)
我想用兩個變量:
df$DaysAfter <- # number of days after last "Match" (for each "Athlete").
df$DaysBefore <- # number of days before next "Match" (for each "Athlete").
PS!當「匹配」== 1時,則「DaysAfter」和「DaysBefore」應爲0. 當「DaysAfter」之前和「DaysBefore」之後沒有匹配時,顯示NA(請參閱示例)。
我想要的數據集看起來像這樣:
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.
我怎樣才能做到這一點?
這並不完全顯示希望的結果。第19行和第20行有錯誤的結果。NA將是正確的 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 0 0 NA -3 NA - 3 –
@Oto_K您能否確認輸出是否更新正確 – akrun
現在是正確的。 –