纵向数据集变量修改:保留个体层面值的首次出现(dplyr实现)
基于dplyr的实现方案
首先加载dplyr工具包:
library(dplyr)
执行如下转换代码即可得到目标结果:
dat <- dat %>% # 按个体i分组,所有计算在个体维度独立执行 group_by(i) %>% mutate( # 标记x首次从0切换为1的行:当前行x=1,上一行x=0(第一行默认上一行x为0,兼容首行即x=1的场景) first_switch = x == 1 & lag(x, default = 0) == 0, # 仅首次切换行保留j1值,其余行设为NA j2 = ifelse(first_switch, j1, NA) ) %>% # 删除临时辅助列、解除分组 select(-first_switch) %>% ungroup()
执行后打印dat即可得到和预期完全一致的结果。
内容的提问来源于stack exchange,提问作者C.F.
相关产品推荐
相关产品推荐

