R语言如何拆分IMDB数据集|分隔genres列并生成0-1哑变量列
方法1:基于你已写好的唯一类型列表实现(基础R语法)
你已经提取到了所有唯一类型的列表li,接下来直接遍历每个类型,逐列判断赋值即可:
for (genre in li) { # grepl匹配到对应类型返回TRUE,转整数就是1,没匹配到返回FALSE转整数就是0 # fixed=TRUE避免类型名含特殊字符时正则匹配出错,ignore.case=TRUE适配tokenize_words自动转小写的特性 movie_clean[[genre]] <- as.integer(grepl(genre, movie_clean$genres, fixed = TRUE, ignore.case = TRUE)) } # 提取所有生成的类型哑变量列查看结果 genre_result <- movie_clean[, unlist(li)] head(genre_result)
方法2:更简洁的tidyverse方案(无需提前提取类型列表)
如果用tidyverse生态的函数可以一步完成拆分、转宽表的操作,代码可读性更高:
library(tidyverse) genre_result <- movie_clean %>% # 按|拆分genres,每个类型单独占一行 separate_rows(genres, sep = "\\|") %>% # 标记存在的类型为1 mutate(val = 1) %>% # 转宽表,不存在的类型自动填充为0 pivot_wider(names_from = genres, values_from = val, values_fill = 0)
运行后得到的genre_result就是你需要的、每个类型对应1/0标记的数据集。
内容的提问来源于stack exchange,提问作者Anish
相关产品推荐
相关产品推荐

