2Я пишу оператор IF, чтобы отфильтровать некоторые значения, которые являются последовательными. Есть ли способ написать оператор IF, чтобы вывести последовательные значения
data H; input HH $; cards; Y1 Y2 Y3 Y4 Y5 ; run; data t; set H; if hh in ('Y2' -'Y4'); run;
Используйте функцию Scan, чтобы извлечь числовую часть, а затем подать нужные числа:
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;
Вы можете воспользоваться тем, что < и > работают с символьными переменными и порядком сортировки:
<
>
data t; set H; if 'Y2' <= hh <= 'Y4'; run;
Однако, Y22 также может быть отсортировано между Y2 и Y4.
Y22
Y2
Y4
data H; input HH $; cards; Y1 Y2 Y3 Y4 Y5 Y22 ; run; data t; set H; if 'Y2' <= hh <= 'Y4'; run;
Так что вам нужно добавить дополнительную логику в этом случае.