2017-01-05 2 views
0

데이터 프레임을 만들 때 아직 적합하지 않은 공분산 행렬을 만들고 싶습니다.RPostgreSQL 쿼리를 준비하고 R 공분산 행렬을 만드는 방법

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 내에서 녹을뿐만 아니라 퍼짐으로 몇 가지 시도를했지만 컴퓨팅은 마지막으로 한 번 시도해 보았을 때 내 로컬 Mac에서 무거워 보였습니다.

미리 도움을 청하십시오!

답변

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

'mean'은 하나의 표 셀의 평균을 구축하여 여러 데이터 요소를 요약 한 예입니다. 물론'length' (데이터 포인트 수),'sum' 또는 다른 함수를 사용할 수도 있습니다 ... – lukeA

0

봐 (데이터 프레임)

관련 문제