[英]How can I aggregate data.table in quarterly frequency?
我的數據以每月頻率提供,我試圖以季度頻率匯總它們。 我正在使用data.table哪個包我不太了解,說實話。
X.DATA_BASE NOME_INSTITUICAO SALDO.x SALDO.y
1: 199407 ASB S/A - CFI 1694581 1124580
2: 199407 BANCO ARAUCARIA S.A. 40079517 6314782
3: 199407 BANCO ATLANTIS S.A. 200463907 9356445
4: 199407 BANCO BANKPAR 1078342 5770046
5: 199407 BANCO BBI 97812975 31112289
對於每個日期,由X.DATA_BASE,199407 = 1994年7月定義。我有幾個機構具有SALDO.x和SALDO.y值。 我想在每個季度為每個機構添加SALDO.x和SALDO.y。 其中一個問題是一些機構進入並離開了。 在一天結束的時候,我希望mydata具有相同的列,但季度頻率。
我怎么能這樣做?
這是一個如何按季度分組和總結的例子(感謝@eddi的建議改進)。 首先讓我們創建一些假日期:
library(data.table)
set.seed(1485)
dat = data.table(date=rep(c(199401:199412,199501:199512),2),
firm=rep(c("A","B"), each=24),
value1=rnorm(48,1000,10),
value2=rnorm(48,2000,100))
dat
date firm value1 value2 1: 199401 A 1009.8620 2054.251 2: 199402 A 1009.7180 2124.202 3: 199403 A 1014.3421 1919.251 ... 46: 199510 B 992.9961 2079.517 47: 199511 B 997.9147 1968.676 48: 199512 B 1002.5993 2006.231
現在,按公司,年份和季度進行總結。 為此,我們從date
創建year
和quarter
分組變量(我們使用整數除法( %/%
)創建年份和mod( %%
)加整數除法來創建季度),並計算value1
和value2
的總和對於每個小組。 這都假設date
是數字。 如果您將其存儲為字符或因子,請先轉換為數字:
dat.summary = dat[ , list(valueByQuarter = sum(sum(value1) + sum(value2))),
by=list(firm,
year=date %/% 100,
quarter=(date %% 100 - 1) %/% 3 + 1)]
dat.summary
firm year quarter valueByQuarter 1: A 1994 1 9131.626 2: A 1994 2 8953.116 3: A 1994 3 8981.407 4: A 1994 4 9175.959 5: A 1995 1 9003.225 6: A 1995 2 8962.690 7: A 1995 3 8809.256 8: A 1995 4 8885.264 9: B 1994 1 9000.791 10: B 1994 2 8936.356 11: B 1994 3 8905.789 12: B 1994 4 8951.369 13: B 1995 1 8922.716 14: B 1995 2 9097.134 15: B 1995 3 8724.188 16: B 1995 4 9047.934
對於dplyr
粉絲來說,這是一個dplyr
方法:
library(dplyr)
dat %>%
group_by(firm, year=date %/% 100,
quarter=(date %% 100 - 1) %/% 3 + 1) %>%
summarise(valueByQuarter = sum(value1 + value2))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.