2017-07-04 1 views
0

Ceci est ma df. Comme vous pouvez le voir il a des valeurs uniques puisque la facture pourrait être réclamée plusieurs fois dans le même mois.Somme agrégée sans valeurs dupliquées du même mois, même référence mais date différente

 Invoice  mtime   Client.Code. Invoice.Date Amount 
1  20170100000 2017-04-03 13:03:53  1006442 2017-01-23 645.75 
6  20170100001 2017-05-04 11:57:06  1004791 2017-01-23 5798.10 
15  20170100007 2017-04-03 13:03:53  1004775 2017-01-23 12912.81 
21  20170100008 2017-04-03 13:03:53  1004775 2017-01-23 132.37 
26  20170100011 2017-04-11 09:59:42  1004689 2017-01-23 13455.10 
38  20170100011 2017-04-19 15:59:18  1004689 2017-01-23 13455.10 
50  20170100011 2017-05-04 11:57:06  1004689 2017-01-23 13455.10 
62  20170100012 2017-04-03 13:03:53  1004775 2017-01-23 15649.38 
68  20170100013 2017-04-03 13:03:53  1004849 2017-01-23 6616.40 
74  20170100013 2017-04-11 09:59:42  1004849 2017-01-23 6616.40 
80  20170100024 2017-04-03 13:03:53  1004962 2017-01-24 3046.59 

Je voudrais connaître le montant total des factures réclamées par mois (mtime), donc si la même facture a été réclamé deux fois par mois, somme comme un, mais si elle a été revendiquée dans plusieurs mois, il devrait en résumer un pour chaque mois.

Je ne sais pas comment faire l'affaire.

Merci.

+0

Voir «agrégat». Essayez-le et signalez les problèmes éventuels. – Parfait

+0

'Claimed.monthly <-agrégation (montant ~ mois (mtime), Claimed.basic, somme)' J'ai essayé mais je ne sais pas comment faire exactement ce que j'explique. –

+1

Est-ce que 'Client.Code.' et' Invoice.Date' sont sans importance pour vos objectifs? Quelle est la sortie désirée? https://stackoverflow.com/help/mcve – wibeasley

Répondre

0

En supposant que votre data.frame est nommé DF, vous pouvez d'abord créer une variable qui extrait le mois et l'année de la date de la facture:

invoice.months <- format(as.Date(DF$Invoice.Date), "%m%Y") 

Ensuite, créez un identifiant unique pour chaque demande de facture, en supprimant la reproduire les demandes dans chaque mois:

unique.id <- unique(paste(DF$Invoice, invoice.months)) 

pour obtenir le numéro de la facture unique, revendique chaque mois (à partir du premier mois au dernier mois):

library(lubridate) 
month.vector <- format(seq.Date(min(DF$mtime), max(DF$mtime), by="1 month"), "%m%Y") 
num.claims.per.month <- sapply(month.vector, function (x) length(grep(x, unique.id))) 
+0

Je me suis inspiré de votre réponse et j'ai fait cela (DF = Claimed.basic) 'Claim.months1 <-transform (Claimed.basic, new.col = format (as.Date (Claimed.basic $ mtime), "% m% Y")) Claim.months2 <-unique (Claim.months1 [, c (1,3: 7)]) Claim.months3 <-agrégation (Quantité ~ new .col, Claim.months2, somme) ' –