我是SAS新手。
我想在SAS中读取txt文件。问题是文件在某些行中缺少数据。
例如,数据是:
James Monroe Monroe Hall Virginia 58 4/28/1758 1816
John Quincy Adams Braintree Massachusetts 57 7/11/1767 1824 113,142 30.92%
Andrew Jackson Waxhaws Region South/North Carolina 61 3/15/1767 1828 642,806 55.93%
Martin Van Buren Kinderhook New York 54 12/5/1782 1836 763,291 50.79%
William Henry Harrison Charles City County Virginia 68 2/9/1773 1840 1,275,583 52.87%
我想要的列是' FullName',' City',' State',' Age',DOB',& #39;年''编号'和'百分比'。
我的代码是:
infile 'C:\sasfiles\testfile.txt' missover dlm='09'x dsd
input FullName City State Age DOB Year Number PercVote;
Run;
但是我收到了错误
9 CHAR Rutherford B. Hayes.Delaware ..Ohio..54.10 / 4 / 1822.1876.4,034,142.47.92%73 ZONE 5776676676242246767046667676222004666003303323233330333303233323330332332 NUMR 2548526F2402E081953945C1712500099F89F9954910F4F18229187694C034C142947E925 全名=。市=。状态=。年龄=。 DOB =。年= 54数=。 PercVote = 1876 ERROR = 1 N = 19 注意:第20行1-17中FullName的数据无效。 注意:20- 19-32行的城市数据无效。 注意:第20行37-40中的状态数据无效。 注意:第20行46-55中数字的数据无效。 注意:第20行62-70中PercVote的数据无效。
答案 0 :(得分:1)
您需要以可以正确解析的格式提供数据。
使用分隔数据时,请使用相邻分隔符表示缺少值。最好在使用它们之前定义变量。如果按顺序定义它们,那么输入语句可以非常简单。
data want ;
infile cards dsd dlm='|' firstobs=2 truncover ;
length name $13 city $11 state $15 age 8 dob 8 yod 8 ;
input name -- yod ;
informat dob mmddyy10.;
format dob yymmdd10.;
cards;
----+----0----+----0----+----0----+----0----+----0----+----0----+----0
James Monroe|Monroe Hall|Virginia||4/28/1758|1816
John Quincy Adams|Braintree|Massachusetts|57|7/11/1767|1824
;
或者将数据强制为列并使用列输入。
data want ;
infile cards firstobs=2 truncover ;
input name $ 1-13 city $ 19-29 state $ 31-45 age 47-48 @50 dob mmddyy10. yod 61-64;
format dob yymmdd10.;
cards;
----+----0----+----0----+----0----+----0----+----0----+----0----+----0
James Monroe Monroe Hall Virginia 4/28/1758 1816
John Quincy Adams Braintree Massachusetts 57 7/11/1767 1824
;
答案 1 :(得分:0)
试试这个:
data want;
infile cards dlm='09'x missover;
input (FullName City State) (:$32.) Age :8. DOB :mmddyy9. Year :4. Number :comma8. PercVote :percent8.;
format DOB mmddyy10. number comma16. percvote percent6.2;
cards;
James Monroe Monroe Hall Virginia 58 4/28/1758 1816
John Quincy Adams Braintree Massachusetts 57 7/11/1767 1824 113,142 30.92%
Andrew Jackson Waxhaws Region South/North Carolina 61 3/15/1767 1828 642,806 55.93%
Martin Van Buren Kinderhook New York 54 12/5/1782 1836 763,291 50.79%
William Henry Harrison Charles City County Virginia 68 2/9/1773 1840 1,275,583 52.87%
;
run;