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

R语言按分组判断当前地址是否在组内任意前序行出现的实现方案

解决方案

你可以直接借助duplicated()函数的原生特性实现需求,该函数默认判断当前元素是否在其之前的序列中出现过,配合dplyr的分组逻辑即可,无需指定固定偏移量:

library(dplyr)
dat <- dat %>%
  group_by(id) %>%
  # 若需自定义前序行的排序规则,可在此处添加arrange(排序字段)语句
  mutate(addr_prev_exist = as.integer(duplicated(address)))

针对你给出的前6行示例,输出的addr_prev_exist列结果依次为0,1,1,0,1,0,完全符合判断要求,分组内行数任意增长都可正常运行。

如果后续需要扩展判断规则,比如同时匹配多个字段,可采用行号遍历取前序子集的方案:

library(dplyr)
library(purrr)
dat <- dat %>%
  group_by(id) %>%
  mutate(addr_prev_exist = as.integer(map_lgl(
    row_number(),
    ~ address[.x] %in% address[1:(.x - 1)]
  )))

两种方案的输出结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:18:00