【问题标题】:Needed help in Selecting the earliest Date from the dataframe in R [duplicate]从 R 中的数据框中选择最早的日期需要帮助 [重复]
【发布时间】: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 中选择最早日期,请告诉我如何解决这个问题

标签: r date dataset logic


【解决方案1】:

试试这个:

    df2 <- aggregate(df, list(df$CUST_NO, df$ID_NO, df$SYMBOL, df$AUTO_CREATE_DT, df$CLASS_TYPE), FUN = min)
    df2 <- df2[c("CUST_NO", "ID_NO", "SYMBOL", "AUTO_CREATE_DT", "CLASS_TYPE", "SORT_DT")]

【讨论】:

    【解决方案2】:
    aggregate(SORT_DT ~ ., data = df, min)
    
    #   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
    

    【讨论】:

      猜你喜欢
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2017-09-16
      相关资源
      最近更新 更多