SAS中文论坛
标题:
请教一个DATA步的问题
[打印本页]
作者:
shiyiming
时间:
2011-4-25 21:12
标题:
请教一个DATA步的问题
菜鸟请教,还请高手指导,假如我有一个数据集,有X个变量 Y条观测值,X个变量中有N个变量所有的观测值都为空,我如何用最简单的方法剔除这N个变量呢?drop 和Keep语句虽然简单基本,但是如果变量特别多,须要一个一个的去找,然后再跳出来去除,有没有什么好办法可以不论N为多大,都可以简单的完成呢?感谢各位高手的帮忙!
作者:
shiyiming
时间:
2011-4-25 21:27
标题:
Re: 请教一个DATA步的问题
菜鸟搞不定这个问题,不过感觉下面的两个链接看懂了话,你的问题应该可以得到很好的解决:
<!-- m --><a class="postlink" href="http://support.sas.com/kb/24/612.html">http://support.sas.com/kb/24/612.html</a><!-- m -->
<!-- m --><a class="postlink" href="http://support.sas.com/resources/papers/proceedings10/048-2010.pdf">http://support.sas.com/resources/papers ... 8-2010.pdf</a><!-- m -->
作者:
shiyiming
时间:
2011-4-25 21:35
标题:
Re: 请教一个DATA步的问题
呵呵,开始试图通过宏语句去解决,结果失败了,看来真的不是件特别简单的事啊,非常感谢你提供的参考资料! <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
作者:
shiyiming
时间:
2011-4-26 02:32
标题:
Re: 请教一个DATA步的问题
jingju
作者:
shiyiming
时间:
2011-4-26 02:37
标题:
Re: 请教一个DATA步的问题
[code:29j9wx66]data _null_;
set had end =Eof;
array _c[*] _character_; array _tc[100] $1 _temporary_;
array _n[*] _numeric_ ; array _tn[100] _temporary_;
do i =1 to dim(_c);
if _tc[i] ne 'c' then if not missing(_c[i]) then do;
c ++1; _tc[i] ='c'; call symputx(cats('c', c), vname(_c[i]));
end;
end;
do i =1 to dim(_n);
if _tn[i] ne 1 then if not missing(_n[i]) then do;
n ++1; _tn[i] =1 ; call symputx(cats('n', n), vname(_n[i]));
end;
end;
if Eof then do;
call symputx('n', n);
call symputx('c', c);
end;
run;
%macro keepem;
%do i =1 %to &c; &&c&i. %end;
%do i =1 %to &n; &&n&i. %end;
%mend keepem;
data have;
set had;
keep %keepem;
run;[/code:29j9wx66]
欢迎光临 SAS中文论坛 (http://mysas.net/forum/)
Powered by Discuz! X3.2