#r #tidyverse
#r #tidyverse
Вопрос:
Я работаю над проекционной моделью для видов спорта, где мне нужно понять последнюю игру определенной команды:
- Кто их следующий противник? (решаемая)
- Когда в последний раз играл их следующий противник?
повторите, который можно использовать ниже. Используя строку 1 в качестве примера, мне нужно было бы понять, что самой последней игрой следующего соперника «a» «e» был game_id_ 3.
game_id_ <- c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6)
game_date_ <- c(rep("2021-01-29", 6), rep("2021-01-30", 6))
team_ <- c("a", "b", "c", "d", "e", "f", "b", "c", "d", "f", "e", "a")
opp_ <- c("b", "a", "d", "c", "f", "e", "c", "b", "f", "d", "a", "e")
df <- data.frame(game_id_, game_date_, team_, opp_)
#Next opponent
df <- df %>%
arrange(game_date_, game_id_, team_) %>%
group_by(team_) %>%
mutate(next_opp = lead(opp_, n = 1L))
Если я могу предоставить более подробную информацию, пожалуйста, дайте мне знать.
Ответ №1:
Мы можем использовать match
для возврата соответствующего game_id_
library(dplyr)
df %>%
arrange(game_date_, game_id_, team_) %>%
group_by(team_) %>%
mutate(next_opp = lead(opp_, n = 1L)) %>%
ungroup %>%
mutate(last_time = game_id_[match(next_opp, opp_)])
Комментарии:
1. Ах, это очень близко и, вероятно, ошибка моего reprex. Как мы можем использовать match(), чтобы найти самые последние, а не первые?
2. @gav не могли бы вы обновить свой reprex. спасибо
3. @gav возможно ли, чтобы вы обновили ожидаемый результат, чтобы я мог перепроверить
4. @gav Вы уже сделали
arrange
это раньше,game_date_
5. Спасибо, акрун! Мне просто нужно было организовать по-другому после «следующего противника» и до «матча», вы были абсолютно правы. Я ценю вашу помощь сегодня. Хороших выходных!