2017-07-04 6 views
0

これは私のdfです。あなたが見ることができるように、請求書は同じ月に何度も請求することができるので、ユニークな価値があります。同じ月の重複値を除いた総計、同じ参照日、異なる日付

 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 

私は、同じ請求書が月に二回主張されている場合には、一つだけのようにまとめるので、月(最終変更時刻)あたりの主張の請求書の総額を知りたいのですが、それが記載されている場合数ヶ月間、それは毎月1つ合計する必要があります。

私はこのトリックを行う方法を知らない。

ありがとうございます。

+0

'?aggregate'を参照してください。試してみて、問題があれば報告してください。 – Parfait

+0

'Claimed.monthly <集計(Amount〜月(mtime)、Claimed.basic、sum)'私は試みましたが、私が説明したことを正確に行う方法はわかりません。 –

+1

'Client.Code.'と' Invoice.Date'はあなたの目標と無関係ですか?希望の出力は何ですか? https://stackoverflow.com/help/mcve – wibeasley

答えて

0

あなたが最初の請求書の日付から月と年を抽出し、変数を作成することができ、あなたのdata.frameがDF命名されると仮定すると:

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

その後除去して、各請求書の請求のための一意の識別子を作成します各月の請求を複製:

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

(早い月から最新の月に)毎月のユニークな請求書の請求の数を取得するには:

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

私はあなたからのインスピレーションを得て答えを出しました。(DF = Claimed.basic) 'Claim.months1 <-transform(Claimed.basic、new.col = format(as.Date (Claimed.basic $ mtime)、 "%m%Y")) Claim.months2 < - ユニーク(Claim.months1 [、c(1,3:7)]) Claim.months3 < - アグリゲート.col、Claim.months2、sum) ' –

関連する問題