如何去除R DataFrame中的嵌套重复数据,实现字段间一一对应
解决方案
你遇到的是同ID分组下Tutee_Type和Tutee_Syll_Cons两个字段的去重值发生笛卡尔积关联的问题,按ID分组后将两个字段的去重值按顺序配对即可得到目标结果,两种常用实现方案如下:
方案1:dplyr(tidyverse生态)
library(dplyr) df_target <- df %>% # 按学员ID分组 group_by(TuteeID) %>% summarise( # 取当前分组下所有不重复的学员类型 Tutee_Type = unique(Tutee_Type), # 取当前分组下所有不重复的一致性值,顺序和类型一一对应 Tutee_Syll_Cons = unique(Tutee_Syll_Cons) ) %>% ungroup()
方案2:data.table(适配你原始数据的打印格式,运行效率更高)
library(data.table) # 确认数据为data.table格式 setDT(df) df_target <- df[, .(Tutee_Type = unique(Tutee_Type), Tutee_Syll_Cons = unique(Tutee_Syll_Cons)), by = TuteeID ]
注意事项
如果你的全量数据中存在单个TuteeID下,去重后Tutee_Type数量和Tutee_Syll_Cons数量不一致的情况,需要先回查原始嵌套列表的配对逻辑,上述方案仅适用于两个字段去重后数量一一匹配的场景,你给出的样例数据用上述代码运行后可直接得到预期结果。
内容的提问来源于stack exchange,提问作者MaelleLF
相关产品推荐
相关产品推荐

