2
我一直需要採取交易數據,並按天,周,月,季度,年 - 它集合了時間序列數據。我開始將zoo
/xts
應用於我的數據,希望能夠更快地彙總數據,但是我不完全瞭解包的目的,或者我試圖錯誤地應用它。R動物園 - 聚合許多記錄與相同的時間條目
一般來說,我想計算按時間段(日,周,月等)按類別排序的訂單數量和產品數量。
#Create the data
clients <- 1:10
dates <- seq(as.Date("2012/1/1"), as.Date("2012/9/1"), "days")
categories <- LETTERS[1:5]
products <- data.frame(numProducts = 1:10,
category = sample(categories, 1000, replace = TRUE),
clientID = sample(clients, 1000, replace = TRUE),
OrderDate = sample(dates, 1000, replace = TRUE))
我可以plyr
和reshape
做到這一點,但我認爲這是一種迂迴的方式這樣做。
#Aggregate by date and category
products.day <- ddply(products, .(OrderDate, category), summarize, numOrders = length(numProducts), numProducts = sum(numProducts))
#Aggregate by Month and category
products.month <- ddply(products, .(Month = months(OrderDate), Category = category), summarize, numOrders = length(numProducts), numProducts = sum(numProducts))
#Make a wide-version of the data frame
products.month.wide <- cast(products.month, Month~Category, sum)
我嘗試申請zoo
的數據,像這樣:
products.TS <- aggregate(products$numProducts, yearmon, mean)
它返回此錯誤:
Error in aggregate.data.frame(as.data.frame(x), ...) :
'by' must be a list
我讀過的zoo
護身符和文件,但每一個例子我發現每個時間段只顯示1條記錄/行/條目。
我是否需要預先彙總我想要的時間序列數據?我希望能夠簡單地按照我想要的字段進行分組,然後將數月或四分之一的數據幀逐步添加到X軸。
有沒有更好的方法來聚合這個或更合適的包?
你是什麼意思「月或季度增加到X軸的數據幀」? –
我在想像一個OLAP多維數據集 - 該類別將在Y軸上,然後是1月,2月,3月...... 2012年9月。您給出的答案會讓我知道,或到宿舍。我只需要弄清楚如何按類別或ClientID進行分組。謝謝。 – mikebmassey