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

开发用于标识向量中重复字符串出现层级的变量需求

我来帮你搞定这个文本分类的需求!咱们可以用两种方式实现——一种是用dplyr包(代码更直观易读),另一种是Base R(不用额外加载包),都能完美匹配你要的标记规则。

方法一:用dplyr实现(推荐)

首先加载dplyr包,如果还没安装的话先跑install.packages("dplyr")完成安装:

library(dplyr)

接下来处理数据,核心逻辑是按name分组,再在每个分组内统计text的累计出现次数,最后根据次数匹配标记:

# 先构造你的示例数据集
name = c("T","T","T","T","T","T","T","T","T","T")
text = c("a","b","a","a","b","c","a","a","b","a")
dfA = data.frame(name, text)

# 分组计算并生成标记列
dfA <- dfA %>%
  group_by(name, text) %>%  # 按name+text分组,确保每个name下的text单独计数
  mutate(
    occurrence = row_number(),  # 生成每个text的累计出现次数(第1次、第2次...)
    dup = case_when(
      occurrence == 1 ~ "origin",          # 第1次出现标记为origin
      occurrence %in% 2:3 ~ "FirstThree",  # 第2-3次标记为FirstThree
      occurrence >= 4 ~ "MoreThanThree"    # 第4次及以后标记为MoreThanThree
    )
  ) %>%
  ungroup()  # 取消分组,回到普通数据框格式

运行完这段代码后,你可以打印dfA查看结果,和你提供的示例完全一致:

print(dfA)

输出结果:

# A tibble: 10 × 4
   name  text  occurrence dup          
   <chr> <chr>       <int> <chr>        
 1 T     a               1 origin       
 2 T     b               1 origin       
 3 T     a               2 FirstThree   
 4 T     a               3 FirstThree   
 5 T     b               2 FirstThree   
 6 T     c               1 origin       
 7 T     a               4 MoreThanThree
 8 T     a               5 MoreThanThree
 9 T     b               3 FirstThree   
10 T     a               6 MoreThanThree

方法二:Base R实现(无需额外包)

如果不想加载dplyr,用Base R的ave()函数也能实现相同效果:

# 构造示例数据
name = c("T","T","T","T","T","T","T","T","T","T")
text = c("a","b","a","a","b","c","a","a","b","a")
dfA = data.frame(name, text)

# 计算累计出现次数
dfA$occurrence <- with(dfA, ave(rep(1, nrow(dfA)), name, text, FUN = seq_along))

# 根据次数生成标记
dfA$dup <- with(dfA, 
                ifelse(occurrence == 1, "origin",
                       ifelse(occurrence %in% 2:3, "FirstThree", "MoreThanThree")))

这段代码的逻辑和dplyr版本完全一致,只是用Base R的函数实现,结果也和示例匹配。

关键逻辑说明

不管用哪种方法,核心都是:

  1. 必须按name和text组合分组,这样才能保证每个name下的text出现次数是独立统计的,不会跨name混淆。
  2. 累计出现次数是判断标记的核心依据,第1次、2-3次、4次及以后分别对应你要的三个类别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:39:18