2014-09-22 5 views
3

У меня есть данные temp, содержащие переменные A1, A2, ... Amax. Я хочу изменить его внутренний порядок, чтобы после его открытия он покажет A2, A5, .....Самый эффективный способ переупорядочения столбцов в SAS

Я знаю, что есть несколько способов сделать это. Обычно я должен использовать инструкцию retain.

Если количество наблюдений велико (N> 1,000,000), то какой эффективный способ это сделать? Шаг данных с retain или proc sql или что-то еще?

Самый эффективный метод означает наименьшее время обработки для меня. Я буду признателен, если вы также можете предоставить анализ памяти и дискового пространства, необходимого для каждого метода.

ответ

7

Пару лет назад я присутствовал на конференции SAS в одном из их главных офисов в Великобритании. Они провели семинар, очень похожий на ваш вопрос, где они рассмотрели скорость различных методов переупорядочения и слияния/объединения наборов данных.

В 3 способа, которые представлены SAS, где:

  • Традиционный Datastep (Сохранил)

  • Proc SQL (Создать таблицу)

  • хэш-таблицы (в частности, вокруг слияние таблиц не обязательно переупорядочивание)

Интересным результатом было то, что, если вы не говорите о очень большом наборе данных, таблица сохранения и создания равномерно согласовывается.

Очевидно, что если вы хотите объединить/объединить и переупорядочить, то proc sql - это способ пойти, поскольку использование шага данных для слияния требует, чтобы вы сначала сортировали, а proc sql - нет. И если он действительно большой, таблицы Hash могут сэкономить 90% времени обработки при слияниях/объединениях.

Один из других результатов, как часть группового обсуждения при использовании больших массивов данных улучшенной производительности ИО Просмотров при повторном заказе:

proc sql noprint; 
    create view set2 as 
    select title, * 
    from set1; 
quit; 

** OR; 

data set2/view=set2; 
    retain title salary name; 
    set set1; 
run; 

(Реферировано здесь: http://www2.sas.com/proceedings/sugi27/p019-27.pdf)

+2

Nice один , Разумеется, представление будет самым дешевым способом изменить порядок столбцов набора данных. –

+0

Что делать, если вам нужно переупорядочить 69 переменных, которые идут как var_1-var_23, vra_1-vra_23 и blah_1-blah_23, и вы хотите var_1 vra_1 blah_1, тогда var_2 vra_2 blah_2 и т. Д. ..... есть более простой способ :( – zazu

+0

@zazu Looks например, это потребует использования макроса :) – jaymarvels

Смежные вопросы