1、日期计算
DATA age;
INFILE 'e:/11/6/tomdate.dat' ;
INPUT
@1 randdate mmddyy10.
@12 brthdate mmddyy10.
@23 date12mmddyy10. ;
agedays =randdate - brthdate ;
ageyrs = (randdate - brthdate)/365.25;
ageint = INT( (randdate - brthdate)/365.25);
agetoday=(TODAY() - brthdate)/365.25 ;
ageendst= (MDY(02,28,1992)- brthdate)/365.25;
daysv12 =date12 - randdate;
if ABS(daysv12 -365) =. then window12 =.;else
if ABS(daysv12 -365) < 31then window12 =1;else
if ABS(daysv12 -365) >=31thenwindow12 =2;
yrrand =YEAR(randdate);
format randdate mmddyy10.
format brthdate mmddyy10.
format date12 mmddyy10.
run;
2、字符串拼接
DATA names;
INFILE DATALINESDSD;
INFORMAT fname$20.lname$20. mi$1. ;
INPUT lname fname mi ;
LENGTH fnamemix$20.lnamemix$20. fullname$44.;
* 从name中抽取第一个字符,然后接上从第二个字符开始的所有的字符的小写 ;
fnamemix = SUBSTR(fname,1,1) || LOWCASE(SUBSTR(fname,2));
lnamemix = SUBSTR(lname,1,1) || LOWCASE(SUBSTR(lname,2));
* 连接3个名字,并删除多余的空格;
fullname = COMPBL (fnamemix || mi ||'. ' || lnamemix ) ;
DATALINES;
GRANDITS,GREGORY, A
SIU, YI, W
;
run;
3、输出数据data _null_;
set hf.en_name;
file'd:\mydb\stu1.txt';
put cn_name$'09'x'---' en_name$;
run;
4、主键,两数据集合并
//创建数据集,ID是主键
DATA baseline;
INFILE DATALINES;
INPUT id $ sbp ;
DATALINES;
C03615 115
B00979 107
B00644 138
D01348 142
A01088 117
;
DATA followup;
INFORMAT datedthmmddyy8.;
INFILE DATALINES;
INPUT id $ datedth cause;
DATALINES;
B00714 01/13/92 3
D02027 03/19/91 1
;
//排序
PROCSORTDATA= baseline;BY id;
PROCSORTDATA= followup;BY id;
//合并
DATA all;
MERGE baseline followup;
BY id ;
RUN;
//在第二个数据集合的纪录补充上第一个数据集合的有关信息
DATA deaths;
MERGE baseline (IN=in1)
followup (IN=in2);
BY id;
if in2;
RUN;
5、Tranwrd(替换指定字符),scan(扫描字符位置)函数使用,替换指定字符,扫描不同位置的字符串
wrd,scan函数使用,替换指定字符,扫描不同位置的字符串Tranwrd,scan函数使用,替换指定字符,扫描不同位置的字符串
data a2;
set hf.a1;
sname= scan(tranwrd(namedetail,'///','|'),1,'|') ;
detail1= scan(tranwrd(namedetail,'///','|'),2,'|') ;
run;
本文介绍了SAS编程中的几个实用技巧,包括日期计算、字符串拼接、数据输出、数据集合并及函数使用等。通过具体示例展示了如何进行日期计算、字符串处理、文件输出以及数据集的合并操作。
3149

被折叠的 条评论
为什么被折叠?



