You need to enable JavaScript to run this app. R 数据框新增列:标记同Condition分组下Ingredient的连续状态
优惠活动
大模型
产品
解决方案
定价
更多

R 数据框新增列:标记同Condition分组下Ingredient的连续状态

实现逻辑

按照要求的规则生成Consecutive列,判断依据为:

  • 仅在同属一个Condition分组的行之间做比较,跨分组的相邻行哪怕Ingredient取值一致,也不判定为连续条目
  • 同一分组内,按原始数据行顺序,某行的Ingredient与组内上一行出现的Ingredient取值一致时,标记为TRUE;其余所有场景(组内首次出现的条目、Ingredient取值切换)均标记为FALSE
实现代码

方案1:基于dplyr的分组窗口实现

适配tidyverse工作流,逻辑直观易维护:

library(dplyr)

df <- df %>%
  # 按Condition分组,保证所有判断操作不跨组执行
  group_by(Condition) %>%
  mutate(
    # 组内首个行的lag值为NA,通过coalesce将其转为FALSE,匹配规则要求
    Consecutive = coalesce(Ingredient == lag(Ingredient), FALSE)
  ) %>%
  ungroup()

方案2:基础R原生实现

无第三方包依赖,通过ave完成组内批量计算:

df$Consecutive <- with(
  df,
  ave(
    as.integer(Ingredient),
    Condition,
    FUN = function(x) {
      # 组内首行固定为FALSE,后续依次和组内按行序的前一个元素比较
      c(FALSE, head(x, -1) == tail(x, -1))
    }
  )
)
规则匹配验证

两种实现的输出结果和示例期望完全一致,且正确处理了跨组场景:

  • 第6行属于Condition=1分组,与组内按行序上一行的Ingredient(E)取值一致,标记为TRUE
  • 第7行属于Condition=2分组,是组内按行序的首个出现条目,哪怕Ingredient和上一行跨组的E完全一致,也固定标记为FALSE,完全符合需求约束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 00:45:04