好的,我的上一个问题我很难格式化
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;
好的我的问题是,有一种方法可以做到这一点,而无需计算每个单独的空间?即使我算数数据仍然没有正确打印出我做错了什么?在此先感谢这应该是我的最后一个问题,我应该为这个决赛做好准备。
答案 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;