全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3598 14
2011-11-02
大家好,
      我不太会用sas,我一般都用stata处理数据,但我现在有个数据特别大,6G左右,我现在想把他拆开,分成十个,即若有3000个观察值的话,第一个的观察值为1-300,第二个位301到600,以此类推。希望哪个懂sas的帮忙写下语句吧,非常感谢了!
二维码

扫码加我 拉你入群

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

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

全部回复
2011-11-2 11:01:56
二维码

扫码加我 拉你入群

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

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

2011-11-2 14:56:54
yugao1986 发表于 2011-11-2 11:01
http://blog.csdn.net/yugao1986/article/details/6861717
你好,非常谢谢你,你给的资料很好,但是我还没开始学习sas,现在又着急使用,大概看了下那个论坛,一时自己也写不出来语句,不知道可否帮忙写一下啊!
你看我的语句对吗?
data mylib.newdata;
set tj.data1 nobs=nobs;
if nobs-_N_<100;
run;
proc print data=new;
run;


这样输出的newdata数据集是有100个观测值,我想知道为什么不是99个?
还有我的这个语句对吗?
二维码

扫码加我 拉你入群

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

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

2011-11-2 15:52:30
最后nobs-_n_可能是0-99
二维码

扫码加我 拉你入群

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

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

2011-11-2 16:23:59
yugao1986提供的网页里面
用宏来写
%macro split(num);
data _null_;
if 0 then set sashelp.class nobs=count;
call symput('numobs',put(count,8.));
run;
%let m = %sysevalf(&numobs/&num, ceil);
%do I=1 %to &m;
data orig_&I;
set sashelp.class;
   if %eval(&num*(&I-1)) <_n_<= %eval(&num*&I);
run;
%end;
%mend split;

%split(8);/*每个文件的行数*/

二维码

扫码加我 拉你入群

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

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

2011-11-3 09:07:50
可以用下面简单的方法:

data get1-get100;
set have;
if 0<_N_<300 then output get1;
if 301<=_N_<600 then output get2;
...
run;

我只是不确定第一行是否可以写成get1-get100,还有就是中间if语句可以写个循环
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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