قطاع الفواصل العليا من سلسلة أحرف (ضغط?)

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

أولا-هاء.أي صيغ أو الفواصل واحد مساحة فصل.

ما هو أنظف / أقصر طريقة للقيام بذلك في ساس 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