【发布时间】:2018-01-24 15:45:30
【问题描述】:
我正在尝试在 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()让您快到那里,也许比这里的答案更简单。
标签: r one-hot-encoding