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

在RStudio中将120个分类合并为9个指定分类+其他的技术问询

高效合并Kickstarter数据分类的方法

嘿,我看到你正在处理Kickstarter数据集的分类合并,想用逐行循环的方式把120个分类归为9个指定分类加「其他」——其实完全不用这么麻烦!R作为向量式编程语言,有更简洁高效的方案,既省代码又跑得快,给你分享两个常用方法:

方法1:用dplyr的case_when(推荐,代码直观易读)

如果你习惯用tidyverse工具链,dplyr的case_when能帮你一行搞定分类映射:

# 先安装并加载dplyr(如果还没装的话)
# install.packages("dplyr")
library(dplyr)

# 第一步:把你的9个指定分类列在这里
target_categories <- c("Film & Video", "Music", "Publishing", "Games", "Technology", "Art", "Design", "Food", "Crafts")

# 第二步:生成新的合并后分类列
kickstarter.df <- kickstarter.df %>%
  mutate(main_category_merged = case_when(
    # 匹配到指定分类就保留原名称
    main_category %in% target_categories ~ main_category,
    # 所有没匹配到的统一归为「其他」
    TRUE ~ "其他"
  ))

这个逻辑很清晰:先定义好你要保留的9个分类,然后通过%in%判断每行的分类是否在目标列表里,是就留原名称,否则直接归为「其他」。

方法2:用base R的factor(无需额外安装包)

如果你不想加载第三方包,用base R的因子重编码也能实现:

# 同样先定义指定分类
target_categories <- c("Film & Video", "Music", "Publishing", "Games", "Technology", "Art", "Design", "Food", "Crafts")

# 获取所有不在目标列表里的分类
other_categories <- setdiff(unique(kickstarter.df$main_category), target_categories)

# 重编码分类:指定分类保留原名,其余转为「其他」
kickstarter.df$main_category_merged <- factor(kickstarter.df$main_category,
                                              levels = c(target_categories, other_categories),
                                              labels = c(target_categories, rep("其他", length(other_categories))))

# 如果需要把结果转为字符型而不是因子,再加一步:
# kickstarter.df$main_category_merged <- as.character(kickstarter.df$main_category_merged)

为什么不推荐用逐行循环?

R的循环是逐行处理数据,当你的数据集行数很多时(比如几万甚至几十万行),循环的运行速度会比向量操作慢很多,而且代码冗长,后期维护也麻烦。上面的两种方法都是向量级别的操作,效率更高,代码也更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:09:59