Извлечение значений из макро-переменной SAS

Я определил макропеременную

%let data_names = fuzzy_Data_segment EMWS2.Clus_TRAIN;

Затем я написал макрос для извлечения и печати значений из вышеуказанной макропеременной как:

 %macro calling_data;
   %do i = 1 %to 2;
     %let data_name&i = %qscan(&data_names,&i);
     %put &&data_name&i;
   %end;
 %mend;
 %calling_data;

Мой код макроса может печатать имя (fuzzy_Data_segment), но он печатает только часть имени (EMWS2). что я должен сделать, чтобы напечатать все второе имя

1 ответ

Ваша проблема в том, что SAS считает точку одним из разделителей по умолчанию в макропеременных. В этом случае похоже, что вы хотите использовать пробел для разделения элементов в data_names, поэтому укажите, что:

%let data_name&i= %qscan(&data_names,&i., %str( ));

Вам также не хватает точек с запятой в вашем %let заявление и в вашем звонке calling_data,

Другие вопросы по тегам