Уникальный идентификатор в группе - PullRequest
2 голосов
/ 02 мая 2020

У меня есть следующий набор данных:


data <- data.table(match = c(1,1,1,1,2,2,2,2), 
player = c("Dave", "Dave", "Dennis", "Dave", "Jake", "Jake", "Josh", "Jake"),
 team = c("Australia", "Australia", "Australia", "Australia", "England", "England", "England", "England"))

Я хочу создать переменную ID, которая указывает позицию каждого игрока в команде для данного матча. Переменная для данного набора данных будет выглядеть так: go:

ID = c(1,1,2,1,1,1,2,1)

Я пытался использовать group_by и назначать номер строки в группе, но это не работает. Есть идеи, как это сделать?

1 Ответ

3 голосов
/ 02 мая 2020

Мы можем использовать match (функция)

library(data.table)
data[, ID := match(player, unique(player)), match]

Или использовать factor

data[, ID := as.integer(factor(player, levels = unique(player))), match]
data
#   match player      team ID
#1:     1   Dave Australia  1
#2:     1   Dave Australia  1
#3:     1 Dennis Australia  2
#4:     1   Dave Australia  1
#5:     2   Jake   England  1
#6:     2   Jake   England  1
#7:     2   Josh   England  2
#8:     2   Jake   England  1

Аналогичная опция в dplyr будет

library(dplyr)
data %>%
   group_by(match) %>%
   mutate(ID = match(player, unique(player)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...