【发布时间】:2018-02-16 20:04:24
【问题描述】:
我有一组与此类似的数据,并希望在所有不同列的值都匹配时获得 SORT_DT 的最早日期。请帮我解决这个问题
df <- fread("CUST_NO ID_NO SYMBOL AUTO_CREATE_DT CLASS_TYPE SORT_DT
107 10120 1 2014-05-12 G/L 2015-01-09
107 10120 1 2014-05-12 G/L 2015-11-10
107 10120 1 2014-05-12 G/L 2014-06-18
107 10120 1 2014-05-12 G/L 2014-05-13
107 10120 1 2014-05-12 G/L 2015-07-10
107 10120 1 2014-05-12 G/L 2015-10-09
107 10120 1 2014-05-12 G/L 2016-04-08
107 10120 1 2014-05-12 G/L 2016-01-08
107 10120 1 2014-05-12 G/L 2016-12-22
107 10120 1 2014-05-12 G/L 2017-01-13
107 10120 1 2014-05-12 G/L 2016-07-08
108 10120 1 2014-05-12 G/L 2017-04-14
108 10120 1 2014-05-12 G/L 2017-04-17
108 10120 1 2014-05-12 G/L 2016-08-31
108 10120 1 2014-05-12 G/L 2015-04-10
108 10120 1 2014-05-12 G/L 2016-12-22")
输出应该如下所示
CUST_NO ID_NO SYMBOL AUTO_CREATE_DT CLASS_TYPE SORT_DT
1 107 10120 1 2014-05-12 G/L 2014-05-13
2 108 10120 1 2014-05-12 G/L 2015-04-10
【问题讨论】:
-
考虑查看以下 SO 答案:stackoverflow.com/questions/33436647/…。您的语法如下:
setDT(df)[, .SD[which.min(as.Date(SORT_DT))], by = CUST_NO] -
@ccapizzano 感谢您的回复。由于我的数据集很大,并且出于安全考虑只放入了其中的一部分,如果 CUST_NO ID_NO SYMBOL AUTO_CREATE_DT CLASS_TYPE 的所有行都匹配然后从 SORT_DT 中选择最早日期,请告诉我如何解决这个问题