SAS delete rows from dataset. Three ways.

Всем привет!

Сегодня рассмотрим простенький пример удаления записей из таблицы SAS.

Хотелось бы отметить, что все изложенный способы завязаны на то, что таблицу SAS можно просто перезаписать, наложив некоторое условие, т.е. выглядеть код будет примерно так:

data A;
set A;
if ….;
run;

Вот и все. А ниже привожу примеры:

Будем рассматривать набор с 1 800 734 строк и размером 305,8 Mб

1.  Идет по таблице обычным Data step шагом и вычищаем не нужные нам записи
в помощью delete 






2. Делаем обратную логику к нашему условию и вычищаем ненужные данный с помощью where

Хочу обратить внимание, что в данном примере мы прочитали лишь 735909 записей, а не все миллион восемьсот . Более подробно смотрите предыдущий урок: Optimization. Where and IF.

3. Также используем обратную логику (в данном примере not in) и условие if.. then output


В принципе как мы видим, на миллионах записей время работы всех способов примерно одинаково.

И напоследок хотел бы привести пример, как делать не надо:

Сразу приведу пример, а затем опишу что именно в нем не так:

То кто внимательно посмотрит на данный пример заметит, что в нем перешли от формата дата времени к формату дата. В SAS, как вы знаете эти форматы различаются. Так вот для этого пришлось применить функцию datepart на поле date_trade, что привело к увеличению времени работы кода.

Надеюсь данный пост был Вам полезен.

С уважением,
Николай.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.