2017-10-02 1 views
-1

J'ai un data.frame comme suit:fusionner des lignes qui ont la même date dans une trame de données

  timestamp  index negative positive sentiment 
      <dttm>  <dbl> <dbl> <dbl>  <dbl> 
1 2015-10-29 15:00:10  0  11  10  -1 
2 2015-10-29 17:26:48  0  1  5   4 
3 2015-10-29 17:30:07  0  10  22  12 
4 2015-10-29 20:13:22  0  5  6   1 
5 2015-10-30 14:25:26  0  3  2  -1 
6 2015-10-30 18:22:30  0  14  15   1 
7 2015-10-31 14:16:00  0  10  23  13 
8 2015-11-02 20:30:18  0  14  7  -7 
9 2015-11-03 14:15:00  0  8  26  18 
10 2015-11-03 16:52:30 0  12  34  22 

Je voudrais savoir s'il y a une possibilité de fusionner des lignes avec des jours égaux tel que j'ai un score pour chaque jour, puisque je n'ai absolument aucune idée de la façon d'aborder ce problème car je ne sais même pas comment désinscrire chaque date et écrire une fonction qui ne fusionne que des dates égales, car le temps diffère chaque jour. Je voudrais obtenir un data.frame qui a la forme suivante:

  timestamp  index negative positive sentiment     
      <dttm>  <dbl> <dbl> <dbl>  <dbl> 
     1 2015-10-29  0  27  43  16 
     2 2015-10-30  0  3  2  -1 
     3 2015-10-31  0  17  17   0 
     4 2015-11-02  0  14  7  -7 
     5 2015-11-03  0  20  60  40 

Est-il possible de se déplacer à ce résultat? Je serais reconnaissant pour tout indice.

+0

Regardez le paquet '' dplyr' pour group_by() 'et' (récapituler) 'fonctions. Ou un paquet 'data.table' utilisant l'argument' by = '. – Balter

Répondre

1

Vous pouvez utiliser aggregate() pour ce faire. Avant de le faire, vous devrez montrer qu'il doit trier selon le jour, en ignorant le moment exact.

Je suppose que vous avez vos données stockées comme df:

aggregate(df[ ,2:5], FUN="sum", by=list(as.Date(df$timestamp, "%Y-%m-%d"))) 
+0

Merci beaucoup, ça a fonctionné parfaitement – JimmyJim