2012-03-21 13 views
1

私はzooと協力して、時系列データの遅延と差分を利用しています。私は会社と日付で構成されるパネルデータセットで作業していません。個々の企業を個別に遅らせて結果をマージするのは非常に面倒です。 Rのパネルデータで動作する良いパッケージはありますか?私は現在plmを認識しています。その他? plmには、の順番(つまり-1対+1)がちょうどzootsと正反対であるという奇妙な問題があります。誰でも好きなパッケージ?のパネルデータR

答えて

1

ddply機能は、plyrパッケージに、 は通常、(それが大規模なデータセットに遅くなることがあります) 無痛この種の操作を行います。

# Sample data 
library(quantmod) 
d <- NULL 
for(s in c("^GSPC","^N225")) { 
    tmp <- getSymbols(s,auto.assign=FALSE) 
    tmp <- Ad(tmp) 
    names(tmp) <- "price" 
    tmp <- data.frame(date=index(tmp), id=s, price=coredata(tmp)) 
    d[[s]] <- tmp 
} 
d <- do.call(rbind, d) 
rownames(d) <- NULL 

# Sample computations: lag the prices and compute the logarithmic returns 
library(plyr) 
d <- ddply(
    d, "id", 
    mutate, 
    previous_price = lag(xts(price,date)), 
    log_return = log(price/previous_price) 
) 
+1

ddplyはかなり速くなることができます! .parallel = T引数を追加する .progress = "text"で進行状況を追跡できます –

+1

@ EtienneLow-Décarie:何が遅くなることができます私はこの部分を並列化できないと思います) はdata.frameを多くの小さなdata.framesに分割しています。 私の状況は次のようになります (1行1000,000個の要素で1〜1000個の要素があり、 では 'max'の代わりにユーザー定義関数が使用されます) ' d < - data.frame(g = round(1e5 * rlnorm(1e6))、x = runif(1e6)); d1 < - ddply(d、 "g"、summarize、max(x)) '。 以下ははるかに高速です: 'd2 < - sqldf(" SELECT g、MAX(x)FROM d GROUP BY g ")'。 –

+0

あなたは並列コンピューティングインフラストラクチャの詳細を教えてください。 – Alex