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

R语言如何用dplyr批量匿名化列中出现次数≤3的取值

报错原因

你编写的anon_low_groups函数内部调用了仅支持数据框/tibble类型的group_by()方法,但dplyr::across()向自定义函数传入的参数是单列向量,因此触发类型适配错误。

修复方案

1. 重写匿名化函数,适配向量输入

无需在函数内部调用数据框操作方法,直接统计向量内各取值的出现频次再做替换即可,示例函数如下:

anon_low_groups <- function(x) {
  # 统计向量内各取值的出现次数
  val_count <- table(x)
  # 出现次数≤3的取值替换为*****,其余保留原值
  ifelse(x %in% names(val_count[val_count <= 3]), "*****", as.character(x))
}

注:若有保留原列数据类型的需求,可在替换逻辑中增加类型转换步骤。

2. 结合across批量处理多列

以下是完整运行示例,支持指定任意列范围做批量匿名化:

library(dplyr)

# 构造测试数据
test_df <- tibble(
  category = c(rep("苹果",4), rep("香蕉",2), rep("橙子",3), "葡萄"),
  sales = c(10,10,10,20,20,30,30,30,30,40),
  region = c(rep("华东",5), rep("华北",2), rep("西南",3), "东北")
)

# 批量处理所有列,也可替换为c(category, region)指定列名
result_df <- test_df %>%
  mutate(across(everything(), anon_low_groups))

内容的提问来源于stack exchange,提问作者John-Henry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:39:03