2012年8月8日
主要是根据选取条件来进行拆分 1、根据行数来选: data test; set oldset; if _n_=10 then output; if id="001" then output; run; 输出第10行的数据行和ID="001"的数据行并形成数据集test; 2、用where语句 3、用firstobs和obs的组合来截取一部分数据行 data test; set oldset(firstobs=10 obs=1000); run;
4、Select 语句 (课本中方法)
data c9501m c9501f;
set c9501;
select(sex);
when ('男') output c9501m;
when ('女') output c9501f;
otherwise put sex='有错';
end;
drop sex;
run;
proc print data=9501m;run;
proc print data=9501f;run;
一个具体例子 (转自:人大经济论坛)
现有2.78G的csv格式数据
其中var1是形如“20110829”的字符串,有1999~2012的数据
需要按年把数据拆分开,分别保存,以便接下来的处理。
求程序代码
在论坛网友的帮助下,问题基本解决了,以下是我自己的代码:
data cd;
infile 'D:fdatacust_done.csv'
DLM = ','
DSD
missover
firstobs=2;
input date$ exch$ id variety$ del$ price$ vol$ short$ tb$ close$ fee method$ time$
pervol force$;
run;
proc print data=cd (obs = 10);
run;
data cd1;
set cd;
year=substr(date,1,4);
run;
data cd1999 cd2000 cd2001 cd2002 cd2003 cd2004 cd2005 cd2006 cd2007 cd2008 cd2009
cd2010 cd2011 cd2012;
set cd1;
select(year);
when ('1999') output cd1999;
when ('2000') output cd2000;
when ('2001') output cd2001;
when ('2002') output cd2002;
when ('2003') output cd2003;
when ('2004') output cd2004;
when ('2005') output cd2005;
when ('2006') output cd2006;
when ('2007') output cd2007;
when ('2008') output cd2008;
when ('2009') output cd2009;
when ('2010') output cd2010;
when ('2011') output cd2011;
when ('2012') output cd2012;
end;
run;