Разбить строку на несколько строк в руководстве SAS enterprise guide
Мне нужна помощь, чтобы разделить строку на несколько строк, когда значение в строке составляет что-то вроде 1-5. Причина в том, что мне нужно считать 1-5, чтобы стать 5, а не 1, как это бывает, когда он рассчитывает на одну строку.
У меня есть ID, значение и место, где оно находится.
Как исключение:
ID Value Page
1 1-5 2
Вывод, который я хочу, примерно такой:
ID Value Page
1 1 2
1 2 2
1 3 2
1 4 2
1 5 2
Я пробовал использовать оператор IF
IF bioVerdi='1-5' THEN
DO;
..
END;
Поэтому я не знаю, что я должен поставить между DO; и END;. Есть какие-нибудь подсказки, чтобы помочь мне здесь?
2 ответов:
Вам нужно перебирать значения внутри вашего диапазона и
OUTPUTзначения. ОператорOUTPUTзаставляет шаг Data записать запись в выходной набор данных.data want; set have; if bioVerdi = '1-5' then do; do value=1 to 5; output; end; end;
Вот еще одно решение, которое менее ограничено фактическим значением '1-5', приведенным в вашем примере, но будет работать для любого значения в формате '1-6', '1-7', '1-100', и т.д.
*this is the data you gave ; data have ; ID = 1 ; value = '1-5'; page = 2; run; data want ; set have ; min = scan( value, 1, '-' ) ; * get the 1st word, delimited by a dash ; max = scan( value, 2, '-' ) ; * get the 2nd word, delimited by a dash ; /*loop through the values from min to max, and assign each value as the loop iterates to a new column 'NEWVALUE.' Each time the loop iterates through the next value, output a new line */ do newvalue = min to max ; output ; end; /*drop the old variable 'value' so we can rename the newvalue to it in the next step*/ drop value min max; /*newvalue was a temporary name, so renaming here to keep the original naming structure*/ rename newvalue = value ; run;
Comments