Я пытаюсь выполнить горячее кодирование приведенного ниже символьного кадра данных в R.
x1 <- c('')
x2 <- c('A1,A2')
x3 <- c('A2,A3,A4')
test <- as.data.frame(rbind(x1,x2,x3))
Пытаюсь привести данные к формату:
x1 <- c(0,0,0,0)
x2 <- c(1,1,0,0)
x3 <- c(0,1,1,1)
result <- as.data.frame(rbind(x1,x2,x3))
names(result) = c('A1','A2','A3','A4')
Используемый разделитель - запятая, и я могу разделить запятую, используя:
test$V1 = as.character(test$V1)
split_list = strsplit(test$V1, ",")
Это дает мне список списков, которые нельзя напрямую ввести в фрейм данных. Есть ли лучший способ сделать это. Я пробовал "https://www.rdocumentation.org/packages/CatEncoders/versions/0.1.0/topics/OneHotEncoder.fit". Пакет распространял один столбец, а не несколько столбцов, как это было необходимо в этом случае.
test %>% tibble::rownames_to_column() %>% tidyr::separate_rows(V1) %>% table()
доводит вас почти до конца и, возможно, проще, чем ответы здесь. - person Axeman   schedule 16.08.2017