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

R语言中如何为满足特定轮次条件的个体生成全轮次处理标识

实现方法

方法1:tidyverse(dplyr)方案

按个体ID分组后,判断该ID前3轮的福利领取哑变量是否全部为1,将判断结果同步到该ID所有行:

library(dplyr)

# 先确保数据按ID和轮次排序
df <- df %>% 
  arrange(personal_ID, wave) %>% 
  group_by(personal_ID) %>% 
  mutate(benefit_1_through_3 = as.integer(all(benefit_dummy_by_wave[1:3] == 1))) %>% 
  ungroup()

如果担心轮次顺序问题,也可以直接指定轮次名称判断:

df <- df %>% 
  group_by(personal_ID) %>% 
  mutate(benefit_1_through_3 = as.integer(all(benefit_dummy_by_wave[wave %in% paste0("wave",1:3)] == 1))) %>% 
  ungroup()

方法2:base R方案

用ave函数实现分组计算,逻辑和上面一致:

# 先按ID和轮次排序
df <- df[order(df$personal_ID, df$wave), ]
# 生成跨全轮次的处理组标识
df$benefit_1_through_3 <- as.integer(
  ave(df$benefit_dummy_by_wave, df$personal_ID, FUN = function(x) all(x[1:3] == 1))
)

两种方法都可以直接适配你最多10轮的全量调研数据,不需要修改核心判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:18:01