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

R语言如何将数据框每列指定数值的20%替换为固定值5

R语言实现数据框按列同值20%替换为5的代码实现

基础版(无需额外安装包)

直接使用R内置函数实现,兼容性最高:

# 自定义替换函数:对单个向量实现同值分组20%替换为5
replace_20pct <- function(vec) {
  # 遍历向量内所有唯一取值
  for (val in unique(vec)) {
    # 提取当前取值对应的所有位置
    val_pos <- which(vec == val)
    # 计算需要替换的数量:取总数量的20%向下取整,不足1个时不替换
    replace_count <- floor(length(val_pos) * 0.2)
    if (replace_count >= 1) {
      # 随机抽取对应数量的位置替换为5
      replace_pos <- sample(val_pos, size = replace_count)
      vec[replace_pos] <- 5
    }
  }
  return(vec)
}

# 对数据框所有列应用替换函数
df_result <- as.data.frame(lapply(df, replace_20pct))

Tidyverse版(适配dplyr语法)

如果你习惯使用tidyverse生态,可以用以下写法:

library(dplyr)

df_result <- df %>%
  mutate(across(everything(), ~ {
    for (val in unique(.x)) {
      pos <- which(.x == val)
      n <- floor(length(pos) * 0.2)
      if (n >= 1) .x[sample(pos, n)] <- 5
    }
    .x
  }))

补充说明

  • 如果你需要20%计算时向上取整,可将代码中的floor替换为ceiling;需要四舍五入则替换为round
  • sample函数保证替换位置是随机的,每次运行结果会有差异,如果需要固定结果可在运行前加set.seed(自定义数字)固定随机种子

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:45:09