全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7383 21
2014-03-10
求助各位大神,用SAS来对类似以下的一个数据集产生子集
ID     DATATYPE     ORI_DATA    COR_DATA
1            A                    XXX           XYX
1            A                    XYX           XXY
2            A                    YYY           ZMZ
2            B                    TTT           TRT
3            C                    YYX           YYY
4            D                    ZZZ           ZZX;

要求:
按照datatype变量来产生子集,即上述数据的前三个datatype为“A”的话,放到一个子集里面,以A命名子集。
原来的数据非常的多,datatype可以按照顺序排出来,但是如果用单纯的where或者if语句来产生子集,需要写很多的类似的行,希望高手可以帮助我呀,在此谢谢各位啦
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-3-10 15:11:26
假设数据集的名字是test:

proc sql noprint;
select distinct datatype into: typlist separated by " "
from test;
quit;

* macro;
%macro subset;
%let i=1;
  %do %until(%scan(&typlist,&i)=);
    data %scan(&typlist,&i);
         set test;
         where datatype="%scan(&typlist,&i)";
        run;
  %let i=%eval(&i+1);
  %end;
%mend;
%subset

* call execute;
data _null_;
set test end=last;
by datatype;
length code $2000;
retain code;
if _n_=1 then code="data &typlist; set test;";
if last.datatype then code=trim(code)||"if datatype="||quote(strip(datatype))||" then output "
    ||strip(datatype)||';';
if last then do;
  code=trim(code)||';run;';
  call execute(code);
end;
run;

call execute方法里面需要数据集按datatype排好序。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-3-10 15:31:18
wwang111 发表于 2014-3-10 15:11
假设数据集的名字是test:

proc sql noprint;
你好,这个有点复杂,我在我的电脑上修改了一下,很多error,我也不知道怎么回事呀。我把原来的数据集给您,麻烦您再帮我看一下。我想要按照datatype来把数据分类,然后每类创造出一个子集,单独保存。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-3-10 16:08:21

请问楼上有熟悉SAS的高手不(在校学生),本人有朋友急需sas培训师,待遇从优,有意向的盆友们联系我哦!qq:2579858093 tel:13810097914
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-3-10 19:32:04
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-3-10 21:08:24

RE: 用SAS来产生子集

nomad5 发表于 2014-3-10 19:32
不好意思呀,好像您没有看明白我的意思。我把数据集给您,您看看能不能帮我重新看一下。我是想按照data_type来把原来的数据集分割成许多子集,相同的data_type的数据放到一个子集里面,然后子集的名称以data_type来命名。我之前估计没有讲清楚,谢谢您啦,麻烦您帮我再看一次。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群