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

R语言如何为数据框添加分组数值型位置标识符(dplyr兼容)

dplyr实现方案

你可以通过分组序号拼接的方式快速生成要求的位置标识符,逻辑完全匹配示例规则:

  • 整数部分:按Fruit列的类别首次出现顺序,给每个唯一类别分配从1开始的递增编号
  • 小数部分:在每个Fruit分组内,按Variety条目的出现顺序,分配从1开始的递增序号
  • 最终将两部分拼接为数值型结果,保证全局唯一

完整可运行代码如下:

library(dplyr)
library(tibble)

# 原始测试数据
raw_df <- tibble(
  Fruit = c(rep("Apple", 3), rep("Pear", 2), rep("Orange", 4)),
  Variety = c("Gala", "Envy", "Pink Lady", "Anjou", "Bartlett", "Blood", "Seville", "Mandarin", "Bergamot")
)

# 生成Position列
result_df <- raw_df %>%
  mutate(
    # 按Fruit首次出现顺序生成整数编号,避免字符排序打乱编号规则
    group_int = as.integer(factor(Fruit, levels = unique(Fruit)))
  ) %>%
  mutate(
    # 拼接组内序号得到最终位置ID
    Position = group_int + row_number() / 10,
    .by = Fruit
  ) %>%
  select(-group_int)

运行后得到的Position列和示例完全一致,输出值为1.1, 1.2, 1.3, 2.1, 2.2, 3.1, 3.2, 3.3, 3.4,可直接传入ganttrify函数使用。

适配提示:如果单个Fruit分组下的Variety条目数超过9个,只需要把代码里的除数10替换为100即可,小数位会自动变为两位,不会出现ID冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 00:31:07