Мы также можем сделать это с индексированием
library(dplyr)
df1 %>%
group_by(matchId) %>%
mutate(goal_diff =cumsum(c(-1, 1)[(teamId == first(teamId)) + 1 ]))
# A tibble: 7 x 4
# Groups: matchId [3]
# matchId teamId eventSec goal_diff
# <int> <int> <dbl> <dbl>
#1 2799331 6718 444. 1
#2 2799331 6726 1153. 0
#3 2799331 6718 2114. 1
#4 2799331 6718 2066. 2
#5 2799332 6710 1001. 1
#6 2799332 6721 2469. 0
#7 2799333 6734 744. 1
data
df1 <- structure(list(matchId = c(2799331L, 2799331L, 2799331L, 2799331L,
2799332L, 2799332L, 2799333L), teamId = c(6718L, 6726L, 6718L,
6718L, 6710L, 6721L, 6734L), eventSec = c(443.55984, 1152.62584,
2113.8237, 2066.28793, 1001.35775, 2469.32876, 744.35563)),
class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7"))