Вы можете использовать функцию scan() в SAS, чтобы быстро разбить строку на основе определенного разделителя.
В следующем примере показано, как использовать эту функцию на практике.
Пример: разделение строк по разделителю в SAS
Предположим, у нас есть следующий набор данных в SAS:
/\*create dataset\*/
data my_data1;
input name $25.;
datalines ;
Andy_Lincoln_Bernard
Barry_Michael
Chad_Simpson_Smith
Derrick_Parson_Henry
Eric_Miller
Frank_Giovanni_Goodwill
;
run ;
/\*print dataset\*/
proc print data =my_data1;

Мы можем использовать следующий код, чтобы быстро разделить строку имени на три отдельные строки:
/\*create second dataset with name split into three columns\*/
data my_data2;
set my_data1;
name1= scan (name, 1 , '_');
name2= scan (name, 2 , '_');
name3= scan (name, 3 , '_');
run ;
/\*view second dataset\*/
proc print data =my_data2;

Обратите внимание, что строка в столбце имени была разделена на три новых столбца.
Для имен, в которых был только один разделитель, значение в столбце name3 просто пустое.
Обратите внимание, что мы также можем использовать функцию удаления , чтобы удалить исходный столбец имени из нового набора данных:
/\*create second dataset with name split into three columns, drop original name\*/
data my_data2;
set my_data1;
name1= scan (name, 1 , '_');
name2= scan (name, 2 , '_');
name3= scan (name, 3 , '_');
drop name;
run ;
/\*view second dataset\*/
proc print data =my_data2;

Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в SAS:
Как нормализовать данные в SAS
Как переименовать переменные в SAS
Как удалить дубликаты в SAS
Как заменить пропущенные значения нулем в SAS