You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中处理电影数据集:将多类型电影转为单一类型

多类型电影的单一类型归类(R语言实现)

假设你的电影数据框为movies,其中genre列存储了多类型标签(格式为逗号分隔字符串或类型列表),以下是两种常见场景的处理方法:

场景1:类型标签为逗号分隔字符串

比如genre列的值为"Drama,Comedy"、"Drama,Adventure,Sci-Fi"这类格式:

  1. 先加载所需工具包:
library(dplyr)
library(stringr)
  1. 按优先级归类类型:
movies_cleaned <- movies %>%
  mutate(primary_genre = case_when(
    # 按优先级顺序判断,优先匹配的类型放在前面
    str_detect(genre, "Drama") ~ "Drama",
    str_detect(genre, "Comedy") ~ "Comedy",
    str_detect(genre, "Adventure") ~ "Adventure",
    str_detect(genre, "Sci-Fi") ~ "Sci-Fi",
    # 可继续添加其他需要优先处理的类型
    TRUE ~ genre # 对不匹配上述类型的条目,保留原单一类型;也可改为"Other"统一归类
  ))

case_when会按顺序执行判断,只要某条匹配成功就会返回对应类型,因此优先级高的类型要放在前面,比如所有包含Drama的多类型电影都会被优先归类为Drama。

场景2:类型标签为列表格式

如果genre列是列表类型(每个元素是一个包含多个类型的向量),可以用sapply来检查类型是否存在:

movies_cleaned <- movies %>%
  mutate(primary_genre = case_when(
    sapply(genre, function(x) "Drama" %in% x) ~ "Drama",
    sapply(genre, function(x) "Comedy" %in% x) ~ "Comedy",
    sapply(genre, function(x) "Adventure" %in% x) ~ "Adventure",
    # 其他类型同理
    TRUE ~ sapply(genre, function(x) x[1]) # 默认取列表中的第一个类型,也可改为"Other"
  ))

你可以根据自己的分析需求调整类型的优先级顺序,确保符合你的归类逻辑。

内容的提问来源于stack exchange,提问作者Adeeb Graissy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 04:45:02