Использовать переменные массива в подмножестве IF без указания количества переменных массива

В SAS у меня есть несколько столбцов с долларовыми значениями и несколько других столбцов. Меня не волнует строка данных, если она имеет 0 значений для всех долларовых значений, и я не хочу, чтобы эти строки были в окончательных данных. Столбцы со значениями в долларах уже находятся в массиве Fix_Missing. Я на шаге данных.

Так, например, я мог бы сделать:

IF Fix_Missing{1} NE 0 OR Fix_Missing{2} NE 0 OR Fix_Missing{3} NE 0;

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


person GeoffDS    schedule 09.12.2014    source источник


Ответы (1)


В большинстве функций, которые принимают неучтенные списки переменных, вы можете использовать of array[*].

if sum(of fix_missing[*]) > 0

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

if cats(of fix_missing[*]) ne '000';

будет работать, и вы могли бы сделать что-то вроде этого:

if cats(of fix_missing[*]) ne repeat('0',dim(fix_missing)-1);

если у вас может быть неизвестное количество элементов массива (repeat берет символ и повторяет его n+1 раз).

Еще одна полезная функция, возможно, бесполезная здесь, но в том же ключе, это whichn и whichc (числовые/символьные версии одного и того же). Если вы хотите знать, есть ли в ЛЮБОМ из них 0:

if whichn(0,of fix_missing[*]) > 0;

который возвращает позицию первого найденного нуля.

person Joe    schedule 09.12.2014
comment
Итак, число 0 всегда будет преобразовано в «0» в виде строки, а не в «0,00» или что-то в этом роде? - person GeoffDS; 09.12.2014
comment
0 станет " 0" по умолчанию (что плохо отображается в комментариях, благодаря уценке, но это одиннадцать пробелов плюс ноль в конце); cats удалит эти пробелы. Формат числа по умолчанию в SAS — best12. в большинстве контекстов, что означает размещение десятичной дроби там, где это необходимо для наилучшего отображения числа — целое число, если оно целое, с десятичным числом, если оно десятичное, и следуйте некоторым правилам для работы с цифрами, превышающими 12 общей длины. - person Joe; 09.12.2014