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

R语言如何按多列数值重复对应行并将原数值替换为1

R实现行重复及数值替换方案

你的代码报错核心原因是rep的第二个参数需要传入长度和数据框行数一致的整数向量,而你传入了多列数据框,参数类型不匹配。

基础R实现(无需额外安装包)

# 1. 计算每行需要重复的次数:取B、C、D列的最大值
rep_times <- apply(df[, -1], 1, max)
# 2. 按次数重复行
res_df <- df[rep(seq_len(nrow(df)), rep_times), ]
# 3. 将B、C、D列中大于1的数值替换为1
res_df[, -1] <- ifelse(res_df[, -1] > 1, 1, res_df[, -1])
# 4. 重置行名(可选,和你给出的目标格式行号一致)
rownames(res_df) <- NULL

运行后res_df即为你需要的结果。

tidyverse风格实现

library(dplyr)
library(tidyr)

res_df <- df %>%
  rowwise() %>%
  # 计算重复次数
  mutate(rep_times = max(c_across(B:D))) %>%
  # 按次数扩展行
  uncount(rep_times) %>%
  # 替换大于1的数值为1
  mutate(across(B:D, ~ifelse(.x > 1, 1, .x))) %>%
  ungroup()

内容的提问来源于stack exchange,提问作者U13-Forward

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:57:04