У меня есть следующие данные:
client_id <- c(1,2,3,1,2,3)
product_id <- c(10,10,10,20,20,20)
connected <- c(1,1,0,1,0,0)
clientID_productID <- paste0(client_id,";",product_id)
df <- data.frame(client_id, product_id,connected,clientID_productID)
client_id product_id connected clientID_productID
1 1 10 1 1;10
2 2 10 1 2;10
3 3 10 0 3;10
4 1 20 1 1;20
5 2 20 0 2;20
6 3 20 0 3;20
Цель состоит в том, чтобы создать реляционную матрицу:
client_id product_id clientID_productID client_pro_1_10 client_pro_2_10 client_pro_3_10 client_pro_1_20 client_pro_2_20 client_pro_3_20
1 1 10 1;10 0 1 0 0 0 0
2 2 10 2;10 1 0 0 0 0 0
3 3 10 3;10 0 0 0 0 0 0
4 1 20 1;20 0 0 0 0 0 0
5 2 20 2;20 0 0 0 0 0 0
6 3 20 3;20 0 0 0 0 0 0
Другими словами, когда product_id равен 10, клиенты 1 и 2 являютсясвязано. Важно отметить, что я не хочу, чтобы клиент 1 был связан с собой. Когда product_id = 20, у меня есть только один клиент, то есть у меня нет связи, поэтому у меня должны быть только нули.
Чтобы быть более точным, все, что я пытаюсь создать, - это квадратная матрица отношений,со всеми комбинациями клиент / продукт в столбцах. Клиент может быть связан только с другим, если он купил тот же продукт.
Я искал группу и играл с другим кодом. Разница между этой проблемой и другими уже отвеченными в том, что я хочу оставить на своем столе клиента № 3, хотя она никогда не покупала какой-либо продукт. Я хочу показать, что у нее нет отношений с любым другим клиентом. Прямо сейчас я могу создать матрицу, сложив отношения по продуктам ( Как создать реляционную матрицу в R? ), но я изо всех сил пытаюсь не сложить их.
Я прошу прощения, если вопрос не является достаточно конкретным или слишком конкретным. Спасибо, в любом случае, stackoverflow - это спасение для начинающих.