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

如何用R筛选同一Application下含C、D、E决策序列的ID

R语言筛选包含C→D→E决策序列的Application对应的ID

下面分两种常见场景给出解决方案,你可以根据实际需求选择:

场景1:同一Application下存在连续的C→D→E决策序列

如果要求三个决策是连续出现的(比如某三行的Decision依次是C、D、E),可以用以下dplyr代码:

library(dplyr)

# 假设你的数据集名为df,包含ID、Application、Decision三列
df_filtered <- df %>%
  group_by(Application) %>%
  # 生成前1位、前2位的决策值,用于检查连续序列
  mutate(
    prev_decision1 = lag(Decision, 1),
    prev_decision2 = lag(Decision, 2)
  ) %>%
  # 标记当前Application组是否存在目标连续序列
  mutate(has_target_seq = any(Decision == "E" & prev_decision1 == "D" & prev_decision2 == "C", na.rm = TRUE)) %>%
  # 筛选出属于符合条件组的所有数据
  filter(has_target_seq) %>%
  # 清理临时生成的辅助列
  select(-prev_decision1, -prev_decision2, -has_target_seq) %>%
  ungroup()

场景2:同一Application下按顺序出现C、D、E(不要求连续)

如果只要求C在D之前出现、D在E之前出现(中间可以有其他决策),可以用这个方法:

library(dplyr)

df_filtered <- df %>%
  group_by(Application) %>%
  # 计算每个决策在组内的首次出现位置
  mutate(
    first_C = min(which(Decision == "C")),
    first_D = min(which(Decision == "D")),
    first_E = min(which(Decision == "E"))
  ) %>%
  # 判断是否满足C先出现、然后D、最后E的顺序
  mutate(has_target_seq = !is.na(first_C) & !is.na(first_D) & !is.na(first_E) & first_C < first_D & first_E > first_D) %>%
  # 筛选符合条件组的所有数据
  filter(has_target_seq) %>%
  # 清理辅助列
  select(-first_C, -first_D, -first_E, -has_target_seq) %>%
  ungroup()

大数据集优化方案(data.table)

如果你的数据集行数较多,用data.table会更高效:

连续序列场景

library(data.table)
setDT(df)

df_filtered <- df[, {
  # 检查组内是否存在连续的C→D→E
  seq_exists <- any(shift(Decision, 2) == "C" & shift(Decision, 1) == "D" & Decision == "E", na.rm = TRUE)
  .SD[seq_exists]
}, by = Application]

非连续但顺序正确场景

library(data.table)
setDT(df)

df_filtered <- df[, {
  first_C <- min(which(Decision == "C"))
  first_D <- min(which(Decision == "D"))
  first_E <- min(which(Decision == "E"))
  seq_exists <- !is.na(first_C) & !is.na(first_D) & !is.na(first_E) & first_C < first_D & first_E > first_D
  .SD[seq_exists]
}, by = Application]

核心思路是先按Application分组,确认该组是否满足决策序列条件,再保留该组下的所有ID数据,这样就能包含像805这样属于符合条件组的所有记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:27:25