2017-01-05 16 views
0

データフレームの作成にまだ適していないデータフレームから共分散行列を作成したいと考えています。RPostgreSQLクエリを手配して共分散行列を作成する方法

pg_id item_id      value date 
1  67808755896     23.5 2016-11-12 
2  223337345      0  2016-11-12 
3  254337000000     1  2016-11-12 
4  34604777037     0  2016-11-12 
5  142223438000     14.3 2016-11-12 
6  170555690000     22  2016-11-12 

データフレーム全体がおおよそ16 000のitem_idので000行500〜である:私は次のタイプのデータフレームを持つデータベースを照会するRPostgreSQLを使用した後

。 item_idが繰り返し表示されます(ここで数ヶ月前に戻っています)。

私が最終的にしたいことは、item_idの値の共分散行列を作成することです。

   item_id 
    date   67808755896 223337345 254337000000 ... 
    2016-11-12 value  value  value 
    2016-11-12 value  value  value    
    2016-11-12 value  value  value   
    2016-11-12 value  value  value  
    2016-11-12 value  value  value   
    2016-11-12 value  value  value 

私の問題:私は、私は次のようになり、データフレームで終わるようにして再配置し、データフレームにする最初のステップとして

にそうするためには、私が必要としている方法でデータフレームを並べ替える方法はわかりません。

希望の構造を取得するために取得時にオプションを与えるSQLクエリがある場合は、それが最善であると思います。

Rの中で私は溶けているだけでなく広がっているものもいくつか試しましたが、前回私が試したローカルマックで計算が重く感じられました。

ありがとうございました!

答えて

0

Rで、これは非常に高速に実行する必要がありますテーブルに

library(data.table) 
set.seed(1) 
n_items <- 15996L; n_days <- floor(500000/n_items) 
df <- data.frame(
    item_id = 1:n_items, 
    date = rep(seq(Sys.Date(), Sys.Date()+n_days, by=1), each=n_items) 
) 
df$value <- runif(nrow(df)) 
dim(df) 
# [1] 511872  3 
uniqueN(df$item_id) 
# [1] 15996 
setDT(df) 
system.time(wide <- dcast(df, date~item_id, value.var = "value", fun.aggregate = mean)) 
     # User  System verstrichen 
     # 0.19  0.00  0.20 
wide[1:5, 1:5] 
#   date   1   2   3   4 
# 1: 2017-01-05 0.26550866 0.3721239 0.57285336 0.9082078 
# 2: 2017-01-06 0.09235838 0.3801334 0.03702181 0.5900971 
# 3: 2017-01-07 0.24687042 0.9922133 0.53181526 0.5044988 
# 4: 2017-01-08 0.29523145 0.2263145 0.33291640 0.1165338 
# 5: 2017-01-09 0.83870267 0.3274892 0.95595348 0.3889042 
+0

おかげで交尾を!実際にそれを試してみたが、fun.aggregate = meanを考えなかった。良い一日、私の日を救った! – Elia

+0

「平均」は単なる例であり、1つのグリッドセル内の複数のデータポイントをそれらの平均を構築することによって要約する。もちろん、 'length'(データポイントの数)、' sum'などの関数を使うこともできます... – lukeA

0

ルック(データフレーム)

関連する問題