2017-09-08 5 views
-2

J'ai un ensemble de données similaire à celui-ci et je voulais obtenir la date la plus proche du SORT_DT lorsque les valeurs de toutes les différentes colonnes correspondent. S'il vous plaît aidez-moi à résoudre ce problèmeBesoin d'aide pour sélectionner la date la plus proche de l'élément de données dans R

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") 

La sortie doit être comme ci-dessous

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 
+0

réexaminera la suivante SO répondre: https: // stackoverflow .com/questions/33436647/groupe-par-et-sélectionnez-min-date-avec-table de données. Votre syntaxe serait la suivante: 'setDT (df) [, .SD [qui.min (as.Date (SORT_DT))], par = CUST_NO]' – ccapizzano

+0

@ccapizzano Merci pour votre réponse. Comme mon ensemble de données est volumineux et ne l'a mis que partiellement en raison de problèmes de sécurité, pouvez-vous me dire comment résoudre cette question si toutes les lignes de CUST_NO ID_NO SYMBOL AUTO_CREATE_DT CLASS_TYPE correspondent à la première date de SORT_DT –

Répondre

0

Essayez ceci:

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")] 
0
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