Удалить апострофы из строки символов (сжать?)

StackOverflow https://stackoverflow.com/questions/714781

  •  23-08-2019
  •  | 
  •  

Вопрос

У меня есть строка, которая выглядит так:

 "ABAR_VAL", "ACQ_EXPTAX_Y",  "ACQ_EXP_TAX", "ADJ_MATHRES2"

И мне бы хотелось, чтобы это выглядело так:

ABAR_VAL ACQ_EXPTAX_Y ACQ_EXP_TAX ADJ_MATHRES2

Т.е.никаких апострофов и запятых, а также одиночного пробела.

Каков самый чистый/короткий способ сделать это в SAS 9.1.3?

Желательно что-то вроде:

call symput ('MyMacroVariable',compress(????,????,????))

Для ясности: результат должен быть разделен одним пробелом, лишен знаков препинания и содержаться в макропеременной.

Это было полезно?

Решение

Ну вот..

data test;
var1='"ABAR_VAL", "ACQ_EXPTAX_Y",  "ACQ_EXP_TAX", "ADJ_MATHRES2"';
run;

data test2;
set test;
call symput('macrovar',COMPBL( COMPRESS( var1,'",',) ) );
run;

%put &macrovar;

Другие советы

Это часть оператора infile или вы действительно хотите создать макропеременные, содержащие эти значения?Если это часть оператора infile, вам не нужно ничего делать, если разделитель установлен правильно.

infile foo DLM=',' ;

И да, вы действительно можете использовать функцию сжатия для удаления определенных символов из символьной строки либо на этапе данных, либо как часть вызова макроса.

COMPRESS(source<,characters-to-remove>)

Образец данных:

data temp;
     input a $;
datalines;
"boo" 
"123" 
"abc"
;
run;

Решите проблему на этапе данных (вместо создания макропеременной):

data temp2; set temp;
a=compress(a,'"');
run;

Устраните проблему при создании макропеременной:

data _null_; set temp; 
call symput('MyMacroVariable',compress(a,'"'));
run;
%put &MyMacroVariable.;

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

Чтобы сжать несколько пробелов в один, используйте compbl: http://www.technion.ac.il/docs/sas/lgref/z0214211.htm

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top