SAS格式化数据线

时间:2016-12-02 00:33:44

标签: sas format

好的,我的上一个问题我很难格式化

data practice;
input
Datalines;
employee_id   Name gender   years   dept     salary    Birthday

         1 Mitchell, Jane A  f    6     shoe     22,450  12/30/1960
         2 Miller, Frances T  f  8  appliance      .     11/27/1965
         3 Evans, Richard A  m   9  appliance    42,900  02/15/1973
         4 Fair, Suzanne K  f    3  clothing     29,700  03/09/1958
         5 Meyers, Thomas D  m  5  appliance     33,700  10/22/1961
         6 Rogers, Steven F  m  3    shoe         27,000  09/12/1960
         7 Anderson, Frank F  m  5  clothing      33,000  03/09/1958
        10 Baxter, David T  m  2     shoe         23,900  11/25/1966
        11 Wood, Brenda L  f  3     clothing      33,000  01/14/1962
        12 Wheeler, Vickie M  f  7  appliance     31,500  12/23/1975
        13 Hancock, Sharon T  f  1  clothing      21,000  01/17/1972
        14 Looney, Roger M    m  10 appliance     31,500  06/09/1973
        15 Fry, Marie E     f    6  clothing      29,700  05/25/1967
; 
run;quit;
Proc print data=practice;
run;quit;

好的我的问题是,有一种方法可以做到这一点,而无需计算每个单独的空间?即使我算数数据仍然没有正确打印出我做错了什么?在此先感谢这应该是我的最后一个问题,我应该为这个决赛做好准备。

1 个答案:

答案 0 :(得分:1)

如果您没有指定字符长度,SAS将使用它遇到的第一个值的长度,并将其分配给该列中的所有值。您可以在数据行语句之前使用语句length var $w;来设置自己的长度。使用选项dsd告诉SAS使用逗号作为变量分隔符,将用引号括起来的字符串作为单个变量读取,并在保存变量之前将其去掉。如果使用空格作为分隔符,请确保dataline语句下面每行前面没有空格。

data practice;
infiles datalines dsd;
length Name $50. dept $9.;
input employee_id   Name $ gender $  years   dept $     salary $   Birthday MMDDYY10.;
format Birthday MMDDYY10.;
Datalines;
1, "Mitchell, Jane A", f,   6,     shoe,     "22,450",  12/30/1960
2, "Miller, Frances T",  f,  8, appliance,     ,  11/27/1965
; 
run;
Proc print data=practice;
run;quit;