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

如何利用collapse包实现分组内carb变量起始为1的索引列?

解决方案

当然可以用collapse包实现这个需求,问题出在你当前使用的groupid(carb)是基于全局的carb值生成索引,而非每个cyl+gear组合组内的独立索引。只需调整groupid的参数,就能让每个分组内的carb索引从1开始:

library(collapse)
mtcars |> fsubset(cyl == 4) |> 
  fselect(cyl, gear, carb) |> 
  roworder(cyl, gear, carb) |> 
  fgroup_by(cyl, gear) |> 
  ftransform(id = groupid(carb, .within = TRUE))

关键说明

  • .within = TRUE参数指定groupid在当前fgroup_by定义的分组(即cyl+gear组合)内计算索引,每个分组内的carb唯一值会从1开始依次编号。
  • 如果你需要的是类似data.table::rleidv的连续相同值索引(即连续出现的相同carb值共享同一个索引,值变化时索引递增,且每个分组内重置),可以替换为seqid(carb, .within = TRUE),seqid是collapse中对应rleid功能的函数:
mtcars |> fsubset(cyl == 4) |> 
  fselect(cyl, gear, carb) |> 
  roworder(cyl, gear, carb) |> 
  fgroup_by(cyl, gear) |> 
  ftransform(id = seqid(carb, .within = TRUE))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:48:10