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

在R中为DataFrame按日期分组添加occurrence序列列的实现方法

解决方案

你可以通过分组生成序号再映射为字母的方式实现需求,以下提供两种常用方法:

方法一:使用dplyr包(tidyverse生态)

先按day分组,再用row_number()生成组内递增序号,最后通过内置的letters向量将序号转为对应的字母:

library(dplyr)

day <- c(1, 1, 2, 3, 3, 3, 4, 4)
value <- c(32, 43, 54, 23, 76, 88, 11, 23)
df <- data.frame(day, value)

df <- df %>%
  group_by(day) %>%
  mutate(occurrence = letters[row_number()]) %>%
  ungroup()

# 查看结果
df

方法二:使用Base R(无需额外包)

用ave()函数对每个day组生成连续序列,再映射为字母:

day <- c(1, 1, 2, 3, 3, 3, 4, 4)
value <- c(32, 43, 54, 23, 76, 88, 11, 23)
df <- data.frame(day, value)

df$occurrence <- letters[ave(rep(1, nrow(df)), df$day, FUN = seq_along)]

# 查看结果
df

两种方法最终都会得到你期望的结果:

day value occurrence
1   1    32          a
2   1    43          b
3   2    54          a
4   3    23          a
5   3    76          b
6   3    88          c
7   4    11          a
8   4    23          b

注意:如果你的分组内行数超过26行(即需要用到"aa"这类标识),可以自定义字母生成逻辑,比如结合进制转换实现,但从你的示例看,当前方案足够覆盖需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:12:21