Как использовать значение столбца в индексе массива в SAS - PullRequest
0 голосов
/ 14 марта 2019

Я хочу установить поднабор данных на основе значения столбца из набора столбцов.

Например, Я хочу установить подмножество набора данных на age> 50, но у меня есть 10 возрастных столбцов в диапазоне от age1 - age10. Кроме того, есть еще один столбец с именем identifier (со значениями от 1 до 10), который сообщает мне, в зависимости от того, в каком столбце я должен установить значение.

Допустим, значение моего столбца identifier равно 5, я должен проверить, больше или нет значение в столбце age5.

Это то, что я пытался, но это не работает.

data library.table2;
    set library.table1;
    array age[10] age1 -- age10;
    if( age(identifier)>50 );
    RUN;

1 Ответ

2 голосов
/ 14 марта 2019

Список переменных, обозначаемый списком позиционных переменных, например age1 -- age10, может полностью отличаться от списка переменных, обозначаемого простым перечисляемым списком, например age1 - age10. Первый ищет все переменные ПОЗИЦИЯ между AGE1 и AGE10. Это может включать 2 переменные или 200 переменных. Может содержать некоторые символьные переменные.

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

array age age1-age10;
array age[10] ;

Если вы относитесь к типу людей с поясом и подтяжками, вы можете указать как размер, так и имена конкретных переменных.

array age[10] age1-age10;

Вы также можете проверить, что IDENTIFIER является действительным индексом.

if identifier in (1:10) then if not age(identifier)>50 then delete;
...