run; data b; set a; id=lag(t); no=t;
if 'a'<=id<='z' and '0'<=no<='9'; drop t; run;
8、现有一个数据流:a23 223 bc4 36 3c5 11d 400 620,按下面要求创建SAS数据集。 用语句input id $ no; 变量id取值上面数据流里的a23, bc4, 11d ,变量no取值233,36,400。但是这个数据流存在问题:如有的id没有no,有的no没有id。创建SAS数据集,删除只有id没有no或者只有no没有id的观测,即把上面的3c5和620去掉,最后得到三个观测: a23 223 bc4 36 11d 400
data a(keep=id no); input x $ @@; id=lag(x); no=input(x,8.); y=lag(no);
if y='.' and id^=' ' and no^='.'; cards;
a23 223 bc4 36 3c5 11d 400 620 ; run;
第五次作业
1. 创建一包含10000个变量(X1-X10000),100个观测值的SAS数据集。分别用DATA 步,
DATA步数组语句和IML过程实现。 data test1a;
informat x1-x10000 9.2; do i=1 to 100; output; drop i;
end; run;
2. 多种方法创建包含变量X的10000个观测值的SAS数据集。
3. 数据集A中日期变量DATE包含有缺失值,创建包含日期变量DATE的数据集B,并填
充开始到结束日之间的所有日期值。
proc iml;
x= {'date' price};
t= {1111 2,2341 2,2132 3,1234 5,12345 6,3456 6,6753 4,2345 7,2134 9}; print t; t[1,1]=.; t[2,1]=.; t[5,1]=.; t[9,1]=.;
create a from t[colname=x];/ append from t; show datasets; show contents; close a; run; quit; data a; set a;
format date yymmdd8.2; run; data a1; set a n=_n_;
format date yymmdd8.2; retain temp;
if date^=. then temp=date; else date=temp; run; data a2; n=_n_; set a1; run;
proc sort data=a2; by descending n; set a2 drop n temp; run;
data a4 set a3; retain temp;
if date^=. then temp=date; else date=temp; run; data a4; n=_n_; set a4; run;
proc sort data=a4 out=b(drop=n temp); by descending n; run;
4. 利用随机数函数RANUNI对某数据集设计返回抽样方案。 data sample(drop =samplesize n); samplesize=5;
do n=1 to samplesize;
readit=ceil(ranuni(0)*totobs); put readit=;
set bb.class point=readit nobs=totobs; output; end; stop; run;
5. 利用随机数函数RANUNI对某数据集设计不返回抽样方案。
data a; set bb.class; keep name;
run; data b;
set a nobs=nobs;
ran=ceil(nobs*ranuni(1)); put ran=; run;
proc sort data=b; by ran; data c; set b; if _n_<=15; run;
6. 给下段程序的主要语句加注释。STOP语句能否删除?为什么? 不能删除。
强制结束数据步,因为set语句在数据步程序中会反复执行数据步的程序直到遇到文件结束(最后一跳观测)的标志,这里使用了指针选项可能碰不到这种标志,所以要用stop,否则就有可能无休止地执行下去。
7.SAS系统显示表达式、函数、数据集、数组或矩阵的具体值时,常需要哪些语句和过程? put; proc print print show list;
第六次作业
2.SAS函数的自变量有几类?
自变量类型:变量名、常数、函数、表达式。 3.举例说明自变量的表示方法和缩写规则。 当函数有多个自变量时,必须用逗号分隔开。
自变量名缩写方法:函数名(OF变量名1-变量名n);函数名(OF变量名1…变量名n)。
7.SAS系统是怎样存贮日期时间的?SAS日期时间存贮标准是什么?
SAS日期和时间存储标准是以1960年1月1号0时0分0秒为起点,然后以相应的间隔记时。如1960年1月1日9时0分,按日记的数值就是0,按小时记的数值就是9。1960年1月2日0时0分,按日记的数值就是1,按小时记的数值就是24。
9.分别说明日期时间函数datdif, yrdif, date(), datetime, mdy, dhms有哪些实际用途。
DATADIF(sdate,edate,basis)返回两个日期之间的天数。 YRDIF(sdate,edate,basis)返回两个日期之间的年数。 DATA()返回当前日期的SAS日期值。 DATETIME()返回当前日期和时间。
MDY(month,day,year)返回由年、月和日定义的SAS日期值。
DHMS(date,hour,minute,second)返回由日期、小时、分钟和秒构成的SAS日期时间值。

