У меня есть кадр данных, который содержит один столбец, который указывает идентификатор события. Существует еще один столбец, который указывает на продукты, используемые в этом событии. Каждый продукт будет использоваться только один раз для события, и каждое событие содержит по крайней мере один продукт. Я хотел бы знать, сколько раз каждый продукт используется с каждым другим продуктом. Некоторые данные пробы ниже:Создание кадра данных из числа пар на основе столбца события
set.seed(1)
events <- paste('Event ', sample(1:4, size = 15, replace = TRUE), sep = '')
events <- events[order(events)]
prods <- paste('Product ', c(1, 2, 3, 4, 1, 5, 6, 2, 4, 6, 7, 1, 2, 3, 5))
test_data <- data.frame(events, prods)
test_data
events prods
1 Event 1 Product 1
2 Event 1 Product 2
3 Event 1 Product 3
4 Event 1 Product 4
5 Event 2 Product 1
6 Event 2 Product 5
7 Event 2 Product 6
8 Event 3 Product 2
9 Event 3 Product 4
10 Event 3 Product 6
11 Event 3 Product 7
12 Event 4 Product 1
13 Event 4 Product 2
14 Event 4 Product 3
15 Event 4 Product 5
Продукт 1 и Продукт 2 происходит в том же событии в два раза (Событие 1 и событие 4). Поэтому я хотел бы вернуть «2» для этого матча. Продукт 1 и Продукт 7 никогда не встречаются в одном и том же событии, поэтому я хочу вернуть 0 для этой пары. Для «совпадений» между одним и тем же элементом я уверенно возвращаю общее количество раз, когда этот продукт используется.
Есть два формата, которые возможны, и у меня нет предпочтения, для которых я хотел бы вернуться.
- Короткая и толстая фрейм данных, в которой продукты работают по вершинам в виде заголовков столбцов и стороны в виде заголовков строк. Тело этого кадра данных будет заполнено количеством совпадений.
- Длинный узкий кадр данных, в котором есть два столбца, которые будут служить для представления всех возможных комбинаций продуктов, а затем третий столбец, представляющий количество раз, когда они совпадают.
Я экспериментировал с expand.grid
, чтобы ничего не показать.
Спасибо!
спасибо. Первоначально я думал, что мне нужно будет иметь «нулевые пары», но я думаю, что без них они будут работать. –