Условный оператор с последовательными значениями в SAS - PullRequest
0 голосов
/ 07 мая 2018

2Я пишу оператор IF, чтобы отфильтровать некоторые значения, которые являются последовательными. Есть ли способ написать оператор IF, чтобы вывести последовательные значения

data H; 
input HH $; 
cards; 
Y1
Y2
Y3
Y4
Y5
; run; 


data t; 
set H; 
if hh in ('Y2' -'Y4');
run;

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Используйте функцию Scan, чтобы извлечь числовую часть, а затем подать нужные числа:

if scan(hh,1,'Y') >= 1 & scan(hh,1,'Y') <=4;

Новый шаг данных:

data t; 
set H; 
if  scan(hh,1,'Y') >= 1 & scan(hh,1,'Y') <=4;
run;
0 голосов
/ 07 мая 2018

Вы можете воспользоваться тем, что < и > работают с символьными переменными и порядком сортировки:

data t; 
set H; 
if 'Y2' <= hh <= 'Y4';
run;

Однако, Y22 также может быть отсортировано между Y2 и Y4.

data H; 
input HH $; 
cards; 
Y1
Y2
Y3
Y4
Y5
Y22
; run; 


data t; 
set H; 
if 'Y2' <= hh <= 'Y4';
run;

Так что вам нужно добавить дополнительную логику в этом случае.

...