SAS拆分数据集
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:\fdata\cust_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;