سؤال

هل هناك أمر أو طريقة سريعة لتعيين جميع المتغيرات الموجودة في PDV مفقودة؟

لدي بعض الكود الذي يعمل مثل هذا:

Data example2; 
var1='A';
Var2='B';
Var3='C';
/* etc*/
output;
Var1='B';
output;
stop;
run;

بمجرد الوصول إلى بيان "الإخراج" الأول، أود إعادة تعيين جميع متغيرات PDV مفقودة (على سبيل المثال Var2 = ''؛ var3 = ''؛) ولكن دون الحاجة إلى إعلانهم يدويا على هذا النحو. هل أستطيع مساعدتك؟

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

المحلول

المكالمة المفقودة روتين و _all_ قائمة المتغير التلقائي سوف تفعل ذلك بسهولة

call missing(of _all_);

علي سبيل المثال

Data example2;
var1='A';
Var2='B';
Var3='C';
output;
call missing(of _all_);
Var1='B';
output;
stop;
run;

proc print data=example2;
run;

ينتج عنه

                                 The SAS System

                               Obs    var1    Var2    Var3

                                1      A       B       C
                                2      B

نصائح أخرى

يمكنك أن تفعل ذلك مع صفائف.

إليك ماكرو يجعل كل شيء في PDV مفقود. المعلمة t هو السماح لك بالاتصال به عدة مرات من خطوة بيانات واحدة.


%macro cleanpdv(t);
array __c&t{*} _character_;
array __n&t{*} _numeric_;
do __i&t=1 to dim(__c&t);
  call missing(__c&t{__i&t});
end;
do __i&t=1 to dim(__n&t);
  call missing(__n&t{__i&t});
end;
drop __i&t;
%mend;

قد تستخدمه مثل هذا:



Data example2;
var1='A';
Var2='B';
Var3='C';
/* etc*/
output;
%cleanpdv(1);
Var1='B';
output;
%cleanpdv(2);
output;
stop;
run;

التي تنتج مجموعة البيانات التالية:

 ABS Var1 var2 var3 1 ABC 2 B 3
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top