2014-12-26 2 views
-1

У меня есть большой набор данных вокруг 3 столбцов и 600000 строк. После поворота он преобразует в 1000 столбцов и 600 строк.
Подмножество входных данныхПовернуть таблицу в SQL vs свернуть один и тот же фрейм данных в R

Date  Id  Price 
2014/12/03 Id1  100 
2014/12/03 Id2  120 
2014/12/03 Id3  110 
2014/12/03 Id4  105 
2014/12/02 Id1  150 
2014/12/02 Id2  115 
2014/12/02 Id3  140 
2014/12/02 Id4  135 
2014/12/01 Id1  165 
2014/12/01 Id2  155 
2014/12/01 Id3  185 
2014/12/01 Id4  195 
2014/11/30 Id1  160 
2014/11/30 Id2  170 
2014/11/30 Id3  180 
2014/11/30 Id4  190 

Выходные данные после того, как поворотное

Date  Id1  Id2  Id3  Id4 
2014/12/03 100  120  110  105 
2014/12/02 150  115  140  135 
2014/12/01 165  155  185  195 
2014/11/30 160  170  180  190 

В наборе данных будет большим, которое будет более эффективным производительность?
1. Сводные в SQL и вернуться к R
2. Возврат исходный набор данных для R и выполнения пивот в R

Я использую RODBC для извлечения данных с сервера MSSQL. Любое предложение по этому поводу?

+9

Почему вы не сравниваете операции самостоятельно? –

+0

Вы можете улучшить производительность в DataTable, установив столбец для индексирования с помощью Sort with DataView, который улучшит производительность при восстановлении данных. –

+0

Я только что воспроизвел полный набор данных (600000 строк и 3 столбца) и 'dcast (df, Date ~ Id) 'привел к четверти секунды –

ответ

0

Я думаю, что «производительность эффективной» не определена в вашем случае. Не зная характеристики вашей машины и более подробную информацию об окружающей среде, что MSSQL выполняется на, что невозможно знать, что было бы быстрее.

вполне вероятно, что ваша среда SQL настроена более эффективно, чем R для обработки операции, при условии, что тот, кто настроен, что исходная база данных знает, что они делают.

Таким образом, при условии, все относительно равны, сделайте это перед вами получить его в R.