私は一貫してトランザクション データを取得し、それを日、週、月、四半期、年ごとに集計する必要があります。基本的に、それは時系列データです。zoo
データをより速く集計できることを期待して、データに/を適用し始めましたxts
が、パッケージの目的を完全に理解していないか、間違って適用しようとしています。
一般的に、注文数と注文数をカテゴリ別、期間別(日、週、月など)に計算したいと思います。
#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
andでこれを行うこともできますが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 軸に増分的に追加できることを望んでいました。
これまたはより適切なパッケージを集約するためのより良いアプローチはありますか?