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

如何在R中按分组生成固定区间内的等间距数值

按月份分组生成等间距位置值的解决方案

原始数据集

df <- tribble(
  ~opp_id, ~month, ~count,
  "304956938","Oct 2023","2",
  "304956938","Oct 2023","2",
  "305075384","Nov 2023","1",
  "304910225","Dec 2023","2",
  "305101457","Dec 2023","2",
  "305005905","Feb 2024","1",
  "305089124","Mar 2024","3",
  "304955132","Mar 2024","3",
  "304955132","Mar 2024","3",
  "305005359","Jun 2024","2",
  "304904187","Jun 2024","2",
  "304973572","Aug 2024","1",
  "304984865","Sep 2024","1",
)

需求说明

按month分组,在1-100区间内生成等间距的position值:

  • 每组记录数为k,则间隔值为100/(k+1)
  • 生成的位置值依次为间隔值、2*间隔值、...、k*间隔值,比如:
    • 2条记录对应33.3、66.6
    • 3条记录对应25、50、75

实现代码

使用dplyr的分组操作即可完成需求:

library(dplyr)

df_with_position <- df %>%
  group_by(month) %>%
  mutate(
    interval = 100 / (n() + 1),
    position = seq(interval, 100 - interval, by = interval)
  ) %>%
  ungroup() %>%
  select(-interval) # 移除临时计算列,可选

# 查看结果
df_with_position

结果示例

部分输出如下,符合预期:

# A tibble: 13 × 4
   opp_id     month     count position
   <chr>      <chr>     <chr>    <dbl>
 1 304956938  Oct 2023  2         33.3
 2 304956938  Oct 2023  2         66.7
 3 305075384  Nov 2023  1         50  
 4 304910225  Dec 2023  2         33.3
 5 305101457  Dec 2023  2         66.7
 6 305005905  Feb 2024  1         50  
 7 305089124  Mar 2024  3         25  
 8 304955132  Mar 2024  3         50  
 9 304955132  Mar 2024  3         75  
10 305005359  Jun 2024  2         33.3
11 304904187  Jun 2024  2         66.7
12 304973572  Aug 2024  1         50  
13 304984865  Sep 2024  1         50  

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:22:40