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

在R语言中基于另一列值的计数新增列

解决方案

你可以使用base R中的ave()函数生成每个comment_id组内的序号,配合paste()完成拼接:

comment_id <- c(1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10)
cat <- c("acc_sp", "acc_lex", "org_gen", "acc_gen", "ran_lex", "arg_rel", "len", "org_lay", "org_spe", "org_gen", "coh_link")
df <- data.frame(comment_id, cat)

# 生成目标列
df$comment_cat_id <- paste(df$comment_id, ave(df$comment_id, df$comment_id, FUN = seq_along), sep = "_")

代码说明:

  • ave(df$comment_id, df$comment_id, FUN = seq_along):按comment_id分组,为每个组内的元素生成从1开始的连续序号,比如comment_id=2的组会生成c(1,2)。
  • paste(...)将comment_id和对应的序号用下划线拼接,得到你需要的comment_cat_id格式。

结果验证:

查看前5行的comment_cat_id:

head(df$comment_cat_id, 5)
# 输出:"1_1" "2_1" "2_2" "3_1" "4_1"

如果你习惯用tidyverse工具链,也可以用dplyr实现:

library(dplyr)

df <- df %>%
  group_by(comment_id) %>%
  mutate(comment_cat_id = paste(comment_id, row_number(), sep = "_")) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:04:55