我希望为体育数据创建一个连续的得分线边距。例如,考虑以下数据:
df <- data.frame(Club = c("O", "H", "H", "O", "H", "O", "O"),
TimeOfScore = c("1:30", "2:06", "7:09", "9:09", "11:08", "14:32", "19:11"),
Points = c(1, 3, 1, 2, 2, 3, 3))
在上面,
"df$Club==O"
代表对方的得分,而df$Club=="H"
。 df$TimeOfScore
列表示得分发生的时间。我希望知道对手在主队领先还是落后多少分的实时得分。我的预期输出将是:
df$Margin <- c(-1, 2, 3, 1, 3, 0, -3)
此输出是基于将对手队之前或之下的点数与主队相比得出的。例如,对手队在比赛中以1:30(1分30秒)得分1分。在该时间点的对应边距是-1或主队下降1点。在下一次发生时,主队得到3分,然后在边距中领先2分。
我将如何去做呢?
最佳答案
df$Margin = with(df, cumsum(ifelse(Club == "H", Points, -Points)))
# df
# Club Points Margin
# 1 O 1 -1
# 2 H 3 2
# 3 H 1 3
# 4 O 2 1
# 5 H 2 3
# 6 O 3 0
# 7 O 3 -3
关于r - 如何根据因子在R中创建运行总计?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44580872/