mingfeng07 发表于 2014-3-10 08:19
日志显示你的数据里有缺失值,你应该把程序列出来,否则别人如何知道你程序错误在哪,又如何给你指正呢?
LIBNAME IN 'E:\';
DATA TEMPX; SET IN.cnu;
KEEP ID DAS_TOTAL SAS_CS_TOTAL SHS_TOT_I;
PROC SORT; BY ID;
RUN;
PROC STANDARD DATA=TEMPX OUT=STDTEMPX MEAN=0 STD=1;
VAR DAS_TOTAL SAS_CS_TOTAL SHS_TOT_I;
RUN;
PROC SORT; BY ID;
RUN;
DATA INITIAL; SET IN.cnu;
KEEP ID TIME SAS_CS_TOTAL ;
TIME = 0;
RENAME SAS_CS_TOTAL=SAS;
PROC SORT; BY ID;
RUN;
DATA FU1; SET IN.cnu;
KEEP ID TIME SAS_CS_TOTAL_1 ;
TIME = 1;
RENAME SAS_CS_TOTAL_1= SAS;
RENAME SHS_TOTAL_1= SHS;
PROC SORT; BY ID;
RUN;
DATA FU2; SET IN.cnu;
KEEP ID TIME SAS_CS_TOTAL_2 ;
TIME = 2;
RENAME SAS_CS_TOTAL_2= SAS;
RENAME SHS_TOTAL_2=SHS;
PROC SORT; BY ID;
RUN;
DATA TEMPY; MERGE FU1 FU2; BY ID TIME;
PROC SORT; BY ID;
RUN;
DATA TEMPY; MERGE FU1 FU2; BY ID TIME;
PROC SORT; BY ID TIME;
RUN;
DATA TEMPZ; MERGE STDTEMPX TEMPY; BY ID;
IF DAS_TOTAL = . THEN DELETE;
IF SAS = . THEN DELETE;
IF SHS_TOT_I= . THEN DELETE;
PROC SORT; BY ID TIME;
RUN;
PROC MEANS MEAN DATA=TEMPZ NOPRINT; BY ID;
VAR DAS_TOTAL SAS SHS_TOT_I;
OUTPUT OUT=TOTAL MEAN= MN_DAS MN_SAS MN_SHS;
RUN;
PROC STANDARD DATA=TOTAL MEAN=0 STD=1 OUT=STDTOTAL;
VAR MN_DAS MN_SAS MN_SHS;
RUN;
DATA FINAL; MERGE TEMPZ STDTOTAL; BY ID;
PROC STANDARD MEAN=0 DATA=FINAL OUT=FINALY; BY ID;
VAR DAS_TOTAL SAS SHS_TOT_I ;
RUN;
PROC MIXED NOCLPRINT METHOD=ML COVTEST NOITPRINT;
CLASS ID TIME;
MODEL SAS=SAS_CS_TOTAL DAS_TOTAL SHS_TOT_I DAS_TOTAL*SHS_TOT_I
/SOLUTION DDFM=BW;
RANDOM INTERCEPT DAS_TOTAL/SUB=ID TYPE=UN;
repeated time /type=ARH(1) subject=id rcorr;
run;
Quit;
可能就是最后一块数据处理上除了错 可是我也看不出来有什么错。。。