في SAS، خارج خطوة البيانات، ما هي أفضل طريقة لاستبدال حرف في متغير الكلي مع فارغة؟

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

  •  22-08-2019
  •  | 
  •  

سؤال

في SAS، خارج خطوة البيانات، ما هي أفضل طريقة لاستبدال حرف في متغير الكلي مع فارغة؟

ويبدو أن TRANSLATE ستكون وظيفة جيدة للاستخدام. ولكن عند استخدام %SYSFUNC مع هذه الوظيفة، ليست محاطة المعلمات مع العملات. كيف يمكنك أن تشير فارغة ينبغي أن تستخدم كبديل؟

هل كانت مفيدة؟

المحلول

وهناك لا يقتبس في لغة الماكرو. ونقلت الأحرف الوحيدة التي يتم استخدامها هي &، % وما إلى ذلك لتشير إلى أن النص يجب أن تفسر على أنها "المشغل" الماكرو. يتم تمثيل فارغة من قبل %str( ) كما هو مبين أعلاه في آخر ولاية كارولينا.

نصائح أخرى

ووشارع٪ () (مع فارغة بين أقواس) يمكن استخدامها للإشارة فارغة لهذه المعلمة. يمكن أيضا حذرا مع translate ... والمعلمة 2ND هو حرف استبدال ... ولكن في TRANWRD يتم عكس ذلك.

    %macro test ;
     %let original= translate_this_var ;
     %let replaceWithThis= %str( ) ;
     %let findThis= _ ;
     %let translated= %sysfunc(translate(&original, &replaceWithThis, &findThis)) ;
     %put Original: &original ***** TRANSLATEd: &translated ;
    %mend ;
    %test;

    %macro test2 ;
     %let original= translate_this_var ;
     %let replaceWithThis= %str( ) ;
     %let findThis= _ ;
     %let tranwrded= %sysfunc(tranwrd(&original, &findThis, &replaceWithThis)) ;
     %put Original: &original ***** TRANWRDed: &tranwrded ;
    %mend ;
    %test2

ويمكنك استخدام بيرل ريج السابق بدلا من ذلك، مثل:

%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd  f***
*/
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top