You need to enable JavaScript to run this app. R使用expandRows扩展行后按原行分组生成顺序编号列的问题
优惠活动
大模型
产品
解决方案
定价
更多

R使用expandRows扩展行后按原行分组生成顺序编号列的问题

问题原因

你原来的代码无法得到预期结果的核心问题是分组依据错误:你直接按RowID字段分组,但每一行的RowID都是唯一值,分组后每组仅1行,完全达不到「小数点前数值相同的行分为一组」的需求,你需要先从RowID中提取小数点前的原始行号作为分组字段。


正确实现代码

方法1:基于现有RowID字段处理

用正则提取RowID中.前面的部分作为分组键,再生成组内序号:

library(dplyr)
library(stringr)

data <- data %>%
  # 提取小数点前的数字作为分组ID
  mutate(group_id = str_extract(RowID, "^\\d+")) %>%
  # 按group_id分组
  group_by(group_id) %>%
  # 生成组内序号
  mutate(id = row_number()) %>%
  # 可选:删除临时生成的group_id列
  ungroup() %>%
  select(-group_id)

方法2:更高效的无依赖方案

其实你调用expandRows的时候就可以直接生成序号,不需要后续处理行名,代码更简洁也不容易出错:

# 生成扩展行时直接添加组内序号
data <- expandRows(data, "MaxRounds", count.is.col = FALSE) %>%
  group_by(power, nights, sites, NonRoundedMaxRounds) %>%
  mutate(id = row_number()) %>%
  ungroup()

输出效果示例

处理后的数据会新增id列,完全符合你的预期:

powernightssitesNonRoundedMaxRoundsRowIDid
0.8009622970015842078311
0.800962297001584207831.12
0.800962297001584207831.23
0.8047195172603262079321
0.804719517260326207932.12
0.804719517260326207932.23

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:06:01