如何在分组DataFrame中筛选存在重复日期变量的行
解决分组内重复日期行的筛选问题
原代码的问题在于duplicated(med_dt)仅会标记每组中第二次及以后出现的重复日期行,所以筛选后只保留了重复项的后续行,而非所有属于重复日期的行。
方法一:双向标记重复项
使用duplicated()的双向判断,既标记从前往后的重复项,也标记从后往前的重复项,两者取并集就能得到所有重复日期的行:
df2 <- df %>% group_by(studynr) %>% filter(duplicated(med_dt) | duplicated(med_dt, fromLast = TRUE)) %>% ungroup() # 按需取消分组
方法二:先统计日期出现次数再筛选
先按studynr和med_dt分组统计出现次数,再筛选出次数大于1的日期对应的所有行:
df2 <- df %>% group_by(studynr, med_dt) %>% mutate(date_count = n()) %>% ungroup() %>% filter(date_count > 1) %>% select(-date_count) # 按需移除统计列
这两种方法都能实现需求:提取每个studynr分组中,所有对应med_dt存在重复的行。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

