في SAS، خارج خطوة البيانات، ما هي أفضل طريقة لاستبدال حرف في متغير الكلي مع فارغة؟
سؤال
في 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***
*/
لا تنتمي إلى StackOverflow