R语言分组汇总时保留组内首个因子去重方法问询
解决方案
针对你的需求,分两种场景给出修改后的代码:
场景1:按因子优先级保留(优先取'before',其次'during',最后'after')
因为你的Event是因子类型,利用因子的水平顺序特性,直接取组内因子水平最靠前的那个值即可。如果Event的水平顺序已经是before < during < after,用以下代码:
group_by(eventID) %>% summarize(event = min(Event))
如果因子水平顺序不符合优先级,先手动指定水平再分组:
df %>% mutate(Event = factor(Event, levels = c("before", "during", "after"))) %>% group_by(eventID) %>% summarize(event = min(Event))
场景2:按组内数据出现顺序保留首个因子
如果需要保留每组数据中第一个出现的Event值,用first()函数:
group_by(eventID) %>% summarize(event = first(Event))
说明
你原代码中paste(unique(Event))会把组内所有唯一的Event拼接成字符串,无法实现只保留单个值的需求。上面两种方法都能保证每个eventID对应一行结果,且仅保留你需要的单个因子值。
内容的提问来源于stack exchange,提问作者Melanie Baker
相关产品推荐
相关产品推荐

