Преобразование данных двух столбцов в строках в несколько столбцов в R с использованием tidyr

Я пытаюсь рассчитать различия между продуктами и пользователями, чтобы использовать их в системе рекомендаций.

Данные находятся в двух столбцах с несколькими строками, их необходимо преобразовать в строки как пользователи и столбцы как продукты.

Я безуспешно пробовал функцию приведения из пакета reshape.

library(dplyr)
library(reshape2)
library(tidyr)
library(reshape)
data <- tibble("customerId" = c(1,2,3,4,1,1), productId = c(10,11,12,10,11,10))

Я хочу преобразовать его в этот формат:

   10    11    12 
1   1     1     0     
2   0     1     0
3   0     0     1
4   1     0     0

Моя основная проблема сейчас заключается в том, что когда у нас есть повторяющаяся запись, она должна учитываться только один раз, поэтому у нас есть значения 0-1.


person Mehdi Zare    schedule 28.05.2019    source источник


Ответы (1)


Опция будет spread в «широкий» формат после создания столбца из 1 с.

library(tidyverse)
data %>% 
  mutate(n = 1) %>%
  spread(productId, n, fill = 0) %>%
  column_to_rownames('customerId')
#  10 11 12
#1  1  1  0
#2  0  1  0
#3  0  0  1
#4  1  0  0
person akrun    schedule 28.05.2019
comment
можете ли вы обновить свой ответ, чтобы он поддерживал повторяющиеся строки? - person Mehdi Zare; 28.05.2019