我希望为体育数据创建一个连续的得分线边距。例如,考虑以下数据:

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/

10-16 16:17