У меня есть data.table
, показывающий, какие товары покупал клиент. Каждая строка представляет одного клиента, а каждый столбец - один элемент. Таблица имеет одинаковое количество столбцов для каждого клиента, а значения в столбцах item*
равны 1 или 0 в зависимости от того, приобрел ли клиент данный товар. Простая версия таблицы выглядит так:
data.table(customerID = c(1,2,3,4,5),
item1 = c(1,0,0,1,1),
item2 = c(1,0,1,1,1),
item3 = c(1,0,0,0,1),
item4 = c(0,1,1,1,1))
В таблице указано, что покупатель 1 приобрел товары 1,2,3, а покупатель 3 - покупатели 1 и 5.
В реальном случае data.table имеет так много столбцов, что было бы нецелесообразно ссылаться на них по имени в коде, но было бы хорошо иметь вместо этого данные в длинном формате.
Мне нужно выяснить, сколько раз отдельные предметы были куплены и сколько раз были куплены их комбинации. В этом случае я хотел бы получить что-то вроде:
item1 3
item2 4
item3 2
item4 4
item1;item2 3
item1;item3 2
item1;item4 1
...
(same for other combinations of length 2)
...
item1;item2;item3 2
item1;item2;item4 1
...
up to combinations of 4 items.
Более того, для каждого покупателя мне понадобится таблица с указанием комбинаций продуктов, которые он или она приобрели.
Edit:
Благодаря трем очень полезным ответам я знаю, как ответить на первую часть вопроса - т.е. подсчитать, сколько клиентов приобрели определенную комбинацию. Однако вторая часть остается без ответа. Я хотел бы знать, какие клиенты купили какую комбинацию.