我的數據的簡化結構如下:使用dplyr變異()合同期限,付款次數和總支出
>ID <- c("A", "B", "B", "C", "A", "B", "C", "C", "A", "B")
>Date = seq(as.Date("2000/07/01"), as.Date("2000/07/10"), "days")
>Amt <- rnorm(10, 10, 3)
>E <- data.frame(Date = Date, ID = ID, Amt = Amt)
>E
Date ID Amt
1 2000-07-01 A 5.9
2 2000-07-02 B 8.2
3 2000-07-03 B 5.2
4 2000-07-04 C 16.0
5 2000-07-05 A 9.6
6 2000-07-06 B 7.8
7 2000-07-07 C 9.3
8 2000-07-08 C 9.8
9 2000-07-09 A 10.0
10 2000-07-10 B 12.0
的實際數據的結構,其中包括1864年14,460支付在超過15年的1830個位置(一個不規則隔開,每天系列)合同:
> str(exp)
'data.frame': 14460 obs. of 14 variables (not all shown):
$ ID : Factor w/ 1864 levels "C10677","C10717"...
$ Loc : Factor w/ 1830 levels "(BLANK CREEK BRIDGE)" ...
$ Year : int 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 ...
$ Month : int 7 7 7 7 7 7 7 7 7 7 ...
$ Day : int 5 6 6 7 11 11 12 16 16 16 ...
$ MonthCount : int 20 20 20 20 20 20 20 20 20 20 ...
$ MonthTotal : num 10140428 10140428 10140428 10140428 10140428 ...
$ Date : Date, format: "2000-07-05" "2000-07-06" "2000-07-06"...
我的目標是數據攝取任務的建設預算預測,將生活在一個ShinyR應用的目的,自動化(遠在 未來)。我用了一個SQL查詢來構建$MonthCount
變量之前我與dplyr圖書館更好地瞭解(感謝DataCamp),現在想知道:
什麼是使用dplyr庫,以最有效的方式(變異)以下特點:
1)「合同期限」:採用合同ID
給定的姓氏和支付Date
之間的差別,並返回一個numeric
類型。
2)「的合同支付數」:計數有多少款項是合同ID
(大概在Contract Length
給定上進行)。假設非零支付,這應該= ID
在該列中出現的次數。
3)「的合同支付總」:資金給定ID
每筆付款,(再次,大概是在實現我打電話Contract Length
的Amt
)。
我正確的想法一個mutate()
調用將能夠處理這三個功能的創建?
編輯:
剛走拿起dplyr,我在#1 E1 <- mutate(E, ContractLength = max(Date) - min(Date))
小打小鬧,但它返回的列'9天,因爲我沒有正確識別「每個ID」條款。 ..
您是否用dplyr自己做過任何嘗試? – 2015-02-23 19:39:05
@docendodiscimus是的,但我還沒有得到太多,因爲我不確定我應該在mutate函數中使用的邏輯。我在'E1 < - mutate(E,ContractLength = max(Date) - min(Date))',但不知道如何告訴它「每個合約」... [編輯:我給的代碼正確返回「9天」的列表] – d8aninja 2015-02-23 19:46:20
您的具體編程問題是什麼?請向我們展示[您嘗試過的代碼](http://whathaveyoutried.com)以及它爲什麼不符合您的需求。分享你的嘗試幫助每個人。它表明你已經花時間去嘗試幫助自己,它使我們避免重申明顯的答案,並且它可以幫助你得到更具體和相關的答案。 – Henrik 2015-02-23 19:49:05