ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

data.table 大表按两列去重并逐列取首个非缺失值

data.table 大表按两列去重并逐列取首个非缺失值

按两个字段做去重时,往往还要把同组的其它列合并进来: 每列取该组内第一个非缺失的值,如果整组都是缺失值就保持缺失。数据量到了几百万行、几 GB 文件的规模,常规写法会直接卡住。

问题现象

输入数据形如:

ID HFAdmission link_type ADMIDATE newdate 1 A 2020-01-01 Linked <NA> <NA> 2 A 2020-02-01 HF only 2020-02-01 2020-02-01 3 A 2020-03-01 HF only <NA> 2020-03-01 4 A <NA> HES only 2020-03-01 2020-03-01 5 A <NA> HES only 2020-04-01 2020-04-01 6 B 2020-06-01 Linked <NA> <NA> 7 B 2020-07-01 HF only 2020-07-01 2020-07-01 8 B <NA> HES only 2020-07-01 2020-07-01

按 ID 与 newdate 两列去重。第 3、4 行的 (A, 2020-03-01) 是重复键: HFAdmission 取第 3 行的值,ADMIDATE 取第 4 行的值,link_type 两者

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进