SAS拆分数据集 - 数据民工张三省

时间:2024-02-19 16:31:12

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;