如何基于前期访问记录修改数据集中已有的GE变量值?
解决方案
首先需要把GE列转换成数值类型(当前是字符串格式,无法进行数值计算),然后按照id分组,计算累积最大值——这个逻辑刚好匹配你的规则:只要前期随访有过1,后续所有记录的GE就会保持1;如果前期全是0,当前就是0。
方法一:用dplyr包(简洁高效)
# 先转换GE为数值型 fichier$GE <- as.numeric(fichier$GE) # 若未安装dplyr,先运行 install.packages("dplyr") library(dplyr) # 分组计算累积最大值,直接覆盖原GE列(也可改成GE_adjusted保留原数据) fichier <- fichier %>% group_by(id) %>% mutate(GE = cummax(GE)) %>% ungroup()
方法二:用基础R(无需额外装包)
# 转换GE为数值型 fichier$GE <- as.numeric(fichier$GE) # 按id分组计算累积最大值 fichier$GE <- ave(fichier$GE, fichier$id, FUN = function(x) cummax(x))
效果验证
运行代码后,GE列会更新为:0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1
完全符合规则:前6个月全为0,第7个月出现1后,后续所有月份的GE统一设为1。
内容的提问来源于stack exchange,提问作者Pipas
相关产品推荐
相关产品推荐

