Найдите комбинации строк, сгруппированных по столбцу, выбрав по 1 строке из каждой группы в кадре данных - PullRequest
3 голосов
/ 27 сентября 2019

У меня есть датафрейм, который можно сгруппировать по столбцам.Каждая строка в определенной группе имеет уникальный идентификатор.Выбрав по 1 строке из каждой группы, я хочу сформировать все возможные комбинации.

Я попытался решить ее с помощью combn() и expand.grid().Но не удалось получить нужное решение.

У меня есть следующий тип данных

Col1  id  Unique id
A     1     A_1
A     2     A_2
B     1     B_1
C     1     C_1
C     2     C_2
C     3     C_3

Я хочу что-то вроде этого:

Группы или кадры данных для следующего типа:

(A_1,B_1,C_1)
(A_1,B_1,C_2)
(A_1,B_1,C_3)
(A_2,B_1,C_1)
(A_2,B_1,C_2)
(A_2,B_1,C_3)

Здесь я показал только 3 группы, которые являются A, B, C.Я настоящий набор данных, я могу иметь любое количество групп, и каждая строка может иметь любое количество идентификаторов.Пожалуйста, помогите мне с кодом или логикой, насколько это возможно.

1 Ответ

5 голосов
/ 27 сентября 2019

Вы можете разделить unique_id на Col1, затем использовать expand.grid().

expand.grid(split(df$Unique_id, f = df$Col1))

    A   B   C
1 A_1 B_1 C_1
2 A_2 B_1 C_1
3 A_1 B_1 C_2
4 A_2 B_1 C_2
5 A_1 B_1 C_3
6 A_2 B_1 C_3
...