Создание уникальных идентификаторов групп в рамках фрейма данных с несколькими группами - PullRequest
0 голосов
/ 25 октября 2018

У меня есть датафрейм:

y <- c(3, 3, 3, 2, 2, 2, 2, 1, 1, 2)
z <- c(1, 1, 1, 2, 2, 3, 3, 3, 4, 4)

df <- data.frame(y, z)

> df
   y z
1  3 1
2  3 1
3  3 1
4  2 2
5  2 2
6  2 3
7  2 3
8  1 3
9  1 4
10 2 4

Теперь я хочу создать идентификатор группы.Группы основаны на y и должны быть пронумерованы от 1 до n.Повторяющиеся числа для y относятся к одной группе.Кроме того, группы вложены в другие группы на основе z, поэтому равные числа для y представляют разные группы, если они находятся в разных группах в z.Это означает: для y существует 6 групп, для z 4 группы.Результат должен быть:

> df
   y z group_id
1  3 1        1
2  3 1        1
3  3 1        1
4  2 2        2
5  2 2        2
6  2 3        3
7  2 3        3
8  1 3        4
9  1 4        5
10 2 4        6

Я рад любой помощи.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Мы можем использовать rleid от data.table

library(data.table)
setDT(df)[, group_id := rleid(y, z)]
0 голосов
/ 25 октября 2018

Вы можете использовать rleid из data.table пакета -

df$group_id <- data.table::rleid(paste(df$y, df$z))
df
   y z group_id
1  3 1        1
2  3 1        1
3  3 1        1
4  2 2        2
5  2 2        2
6  2 3        3
7  2 3        3
8  1 3        4
9  1 4        5
10 2 4        6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...