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

如何基于样本量修改factor类型id列的取值

R语言实现方案

方法1:Base R 实现(无需额外加载包)

直接修改factor的levels即可完成批量替换,效率更高:

# 构造示例测试数据
df <- data.frame(
  id = factor(c(rep("a", 4), rep("b", 2))),
  val = 1:6
)

# 统计每个id的出现频次
id_freq <- table(df$id)
# 筛选出出现次数大于3的id
target_ids <- names(id_freq[id_freq > 3])
# 批量替换对应factor的level为c
levels(df$id)[levels(df$id) %in% target_ids] <- "c"

运行后df$id中原值为a的条目会全部变为c,b保持不变,且id列仍为factor类型。

方法2:tidyverse 生态实现

如果日常使用dplyr处理数据,可以用如下写法:

library(dplyr)

df <- df %>%
  # 按id分组统计每条记录对应的id出现次数
  add_count(id) %>%
  # 替换符合条件的id,完成后转回factor类型
  mutate(id = as.factor(ifelse(n > 3, "c", as.character(id)))) %>%
  # 删除临时生成的计数字段
  select(-n)

如果有加载forcats包处理factor,还可以用更简洁的写法:

library(dplyr)
library(forcats)

df <- df %>%
  mutate(id = fct_other(id, keep = names(which(table(id) <= 3)), other_level = "c"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:54:03