初学者。在SAS中读取数据(阅读日期和100分数问题)

时间:2015-10-07 00:24:04

标签: sas

问题说:第一行是标题行,不应该读取(使用infile选项firstobs = 2)其余行包含ID号(字符)。性别(字符),出生日期DOB以及两个分数1和2.请注意,分数有一些缺失值,并且您希望确保SAS不会转到新行来读取这些值。使用DATE9写一个SAS DATA STEP读取DOB。以下是数据行(我将其放在我的代码中以节省空间)。

DATA READ;                                                                                                                              
INFILE DATALINES FIRSTOBS=2;                                                                                                           
 INPUT   ID  1-3                                                                                                                        
     GENDER $  5                                                                                                                    
  @7   DOB  mmddyy10.                                                                                                               
  @   SCORE1  3                                                                                                                     
  @   SCORE2  3                                                                                                                     
;                 



DATALINES;                                                                                                                              
***Header line: ID GENDER DOB SCORE1 SCORE2                                                                                             
001 M 10/10/1976 1OO 99                                                                                                                 
002 F 01/01/1960 89                                                                                                                     
003 M 05/07/2001 90 98                                                                                                                  
;                                                                                                                                       

DATA PROB12_8;                                                                                                                          
SET READ;                                                                                                                               
FORMAT DOB MMDDYY9.;                                                                                                                    
RUN;                                                                                                                                    


PROC PRINT DATA=PROB12_8;                                                                                                               
RUN;                                                                                                                                    

我的输出是:

OBS ID GENDER DOB SCORE1 SCORE2
1    1    M     .    .       99      
2    2    F     .    89      .
3    3    M     .    90      98

如果我指定空格量并在程序中使用指针,我不会理解为什么程序会以这种方式读取。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的问题从SCORE1和SCORE2开始,指针控件指定不正确。另请注意,1OO不是100.使用列表输入和错误的infile语句选项可以轻松读取此文件。

DATA READ;                                                                                                                              
   INFILE DATALINES FIRSTOBS=2 missover;
   informat id $3. gender $1. dob mmddyy10.;
   input ID GENDER DOB SCORE1 SCORE2;
   format dob mmddyy10.;
   datalines; 
***Header line: ID GENDER DOB SCORE1 SCORE2                                                                                             
001 M 10/10/1976 1OO 99                                                                                                                 
002 F 01/01/1960 89                                                                                                                     
003 M 05/07/2001 90 98                                                                                                                  
;;;;                   
   run;

enter image description here