SAS Retain 用法
/* retain*/
/*==============================================================*/
/*Example 1*/
/*==============================================================*/
DATA WITHOUT_1;
PUT "Before the INPUT statement: " _ALL_;
INPUT X @@;
PUT "After the INPUT statement: " _ALL_ /;
DATALINES;
1 2 . 3
;
run;
DATA WITH_1;
RETAIN X;
PUT "Before the INPUT statement: " _ALL_;
INPUT X @@;
PUT "After the INPUT statement: " _ALL_ /;
DATALINES;
1 2 . 3
;
run;
/*==============================================================*/
/*Example 2*/
/*==============================================================*/
/*前一个非缺失值来填补该缺失值*/
DATA WITHOUT_2;
PUT "Before INPUT: " _ALL_ ;
INPUT X @@;
IF X NE . THEN OLD_X = X;
ELSE X = OLD_X;
PUT "After assignment: " _ALL_ /;
DATALINES;
1 2 . 3
;
run;
DATA WITH_2;
RETAIN OLD_X;
PUT "Before INPUT: " _ALL_ ;
INPUT X @@;
IF X NE . THEN OLD_X = X;
ELSE X = OLD_X;
PUT "After assignment: " _ALL_ /;
DATALINES;
1 2 . 3
;
run;
/*==============================================================*/
/*Example 3*/
/*==============================================================*/
/*每个数据加一个顺序的行号*/
DATA WITH_3;
RETAIN SUBJECT 0;
PUT "Before the INPUT statement: " _ALL_ ;
INPUT X @@;
SUBJECT = SUBJECT + 1;
PUT "After the INPUT statement: " _ALL_ /;
DATALINES;
1 3 5
;
run;
DATA WITHOUT_4;
PUT "Before the INPUT statement: " _ALL_ ;
INPUT X @@;
SUBJECT + 1;
/* SUM statement */
PUT "After the INPUT statement: " _ALL_ /;
DATALINES;
1 3 5 7 9 2 5 6 9
;
run;
/*注意到SUM语句的作用:*/
/* 不需要显示地用“=”赋值*/
/* 不需要显示地初始化SUBJECT,它会自动初始化为0*/
/* 不需要显示地RETAIN,它会自动RETAIN变量*/
DATA USE_n_;
PUT "Before the INPUT statement: " _ALL_ ;
INPUT X @@;
n=_n_;
PUT "After the INPUT statement: " _ALL_ /;
DATALINES;
1 3 5
;
run;
/*==============================================================*/
/*Example 4*/
/*==============================================================*/
DATA ONE;
INPUT X Y;
DATALINES;
1 2
;
DATA TWO;
IF _N_ = 1 THEN SET ONE;
PUT "Before INPUT statement: " _ALL_;
INPUT NEW;
PUT "After INPUT statement: " _ALL_ / ;
DATALINES;
3
4
5
;
run;
/*sashelp*/
data test2;
set sashelp.vcolumn;
where libname="WORK" ;
run;
proc sql;
select nobs,nvar into:nobs,:nvar
from dictionary.tables
where libname="WORK" ;
quit;
%put &nobs;
%put &nvar;
proc sql;
select nobs,nvar
into:nobs,:nvar
from dictionary.tables
where libname="WORK" and memname="with_3";
quit;
data class1;
set class2;
format _all_;
retain getpost_sumzb;
getpost_sumzb+getpost_zhanbi;
retain sumbytes_sumzb;
sumbytes_sumzb+sumbytes_zhanbi;
chazhi=getpost_sumzb-sumbytes_sumzb;
run;

浙公网安备 33010602011771号