楼主: andy162639
6768 35

SAS变量批量删除 [推广有奖]

31
andy162639 发表于 2011-11-9 16:37:34
crazygoing 发表于 2011-11-9 16:29
可以的。我的思路就是把原数据集清空,把新的数据集加进去就可以了。完整代码如下
谢谢关注,同样存在变量类型不一致的问题
有人说,统计归根结底就是个P

32
yugao1986 发表于 2011-11-9 17:58:29
直接上数据吧
三人行必有我师

33
chai_prime 发表于 2011-11-9 21:21:08
不好意思...我只会这个...iml求学习啊~~
  1. data test;
  2. input x y z t;
  3. cards;
  4. 1 2 3 4
  5. 3 4 2 1
  6. ;
  7. run;

  8. proc transpose data = test out = out_test;
  9. run;

  10. data need;
  11.         set out_test;
  12.         if _n_ > 1 then col2 = .;
  13. run;

  14. proc transpose data = need out = need_back(drop = _name_);
  15. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
meishanjia1900 + 1 + 1 + 1 方法不错

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

34
456852 发表于 2011-11-9 23:08:25
andy162639 发表于 2011-11-9 10:32
怎么声明呢?可否把您的代码修改一下,告诉我,谢谢。
一模一样的做法呀,只是分开来做而已。
data a;
input a b c d e f g h k $ t p $;
cards;
1 2 3 4 5 6 2 4 r 3 g
5 6 3 2 4 5 6 7 t 4 t
3 4 5 6 7 8 2 5 w 5 r
;
filename outn 'c:\outn.sas';
filename outc 'c:\outc.sas';
options source2;
proc contents data=a out=var noprint;run;
data varn;
set var;
where varnum>=2 and type=1;
if _n_=1 then name='array nmis{*} '||trim(name);
run;
data varc;
set var;
where varnum>=2 and type=2;
if _n_=1 then name='array cmis{*} '||trim(name);
run;
data _null_;
file outn;
set varn;
put name;
run;
data _null_;
file outc;
set varc;
put name;
run;
data b;
set a;
%include outn;
;
if _n_>=2 then do i=1 to dim(nmis);
nmis(i)=.;
end;
drop i;
%include outc;
;
if _n_>=2 then do i=1 to dim(cmis);
cmis(i)='';
end;
drop i;
run;

35
yanan9256 发表于 2011-11-11 16:06:55
给你提供一个很好的方法,我们老师经常用到
参数选择中,打开创建html结果
proc contents data=数据集;
会将数据集中得变量名全部输出到html中,复制黏贴 就可以在你的程序中使用了

36
spssone 发表于 2011-11-12 17:15:13
data a;
input a1  a2 a3 a4 a5;
cards;
3  2 3 4 5
4 3 4 5 6
;
run;
proc iml;
use a;
read all into x        ;
x[,3:5]=.; *如果是200-9000列,就写x[,200-9000];
create b from x;
append from x;
quit;

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 14:10