2016-09-25 3 views
1

В текстовом файле данные разделены |. Таким образом, я использовал кодПравильное использование dlm и dsd

data TEST.something; 
infile something dlm = '|' dsd missover firstobs=2; 
    input Proc_cde : $3. 
    Profession_Name : $16. 
    Lic_id : $8. 
    Expire_Date : mmddyy10. 
    Original_Date : mmddyy10. 
    Rank_Code : $2. 
    License_Number : $5. 
    Status_Effective_Date: mmddyy10. 
    Board_action_Indicator : $1. 
    License_Status_Description : $5. 

    Last_name : $20. 
    First_Name : $14. 
    License_Active_Description : $8. 
    e_mail $30. 
    ; 

Но в моем текстовом файле, у меня есть недостающие значения, такие как ETIEXXX|MILTHYYY||||ACTIVE|23

Когда я распечатать данные, некоторые из значений, которые я хотел, не показали, но другие являются правильными. Он также показывает || в некотором месте. Данные были сдвинуты.

Итак, что не так?

EDIT

Выборочные данные (только список несколько строк).

pro_cde|Profession-Name|lic_id|Expire-Date|Original-Date|Rank-Code|License-Number|Status-Effective-Date|Board-Action-Indicator|License-Status-Description|Last-Name|First-Name|Middle-Name|Name-Suffix|Business-Name|License-Active-Status-Description|County|County-Description|Mailing-Address-Line1|Mailing-Address-line2|Mailing-Address-City|Mailing-Address-State|Mailing-Address-ZIPcode|Mailing-Address-Area-Code|Mailing-Address-Phone-Number|Mailing-Address-Phone-Extension|Practice-Location-Address-Line1|Practice-Location-Address-line2|Practice-Location-Address-City|Practice-Location-Address-State|Practice-Location-Address-ZIPcode|Email|Mod-Cdes|Prescribe-Ind|Dispensing-Ind| 
732|Dental Hygienist|@2783168|03/28/2016|08/01/2005|SC|16042|08/01/2002|N|CLEAR|ETIEXXX|MILTHYYY||||ACTIVE|23|UIARI-DADE| P.O BOX 692343||MIAMI|FL|34568|815|738-4640||13830 S.W 6TH AVE||UIARI|NY|34568|[email protected]|||| 
732|Dental Hygienist|690|03/28/2016||CA|1143|04/20/2013|N|CLEAR|WTGD|CUIOLYN|J|||ACTIVE|56|OKALOOSA|5702 OLD BETHEL RD||CRESTVIEW|FL|32536|850|862-0924||90 RATETRACK ROAD||FORT WCLTON BEACH|VA|32547||||| 
732|Dental Hygienist|9728|03/28/2016|08/27/1998|SD|11119|03/15/2012|N|CLEAR|RTED|RIHGARD|B|||ACTIVE|39|HILLSBOROUGH|249 APACHE TRAIL||BRANDON|ND|34568|313|659-7798||249 APDDHE TRAIL||BRANDON|FL|34568||||| 
+0

Ничего страшного в том, что у вас там есть, поэтому вам нужно будет отобразить некоторые примеры данных, которые на самом деле не сработают (и имеет смысл с вашим инструктором ввода - вашего примера там нет). – Joe

+0

Вероятно, вы используете двоеточие и форматируете неправильно, но, как указал Джо, без данных, которые мы не можем комментировать за пределами этого. DSD требуется для интерпретации последовательных разделителей как пропущенных значений. – Reeza

+0

@Joe, образец данные есть. – Bigeyes

ответ

0

Ваш список переменных в вашем заявлении INPUT не соответствует вашему списку переменных в первой строке ваших данных. Вы пропустили много столбцов.

Вы можете пропустить столбцы, если хотите, добавив некоторые фиктивные переменные в ваш оператор INPUT. Вы должны добавить модификатор : перед любыми информационными данными, указанными в инструкции INPUT, чтобы предотвратить SAS от чтения за разделителями.

length dummy $1 ; 
drop dummy ; 
input 
    Proc_cde : $3. 
    ... 
    First_Name : $14. 
    3*dummy 
    License_Active_Description : $8. 
    15*dummy 
    e_mail :$30. 
; 
+0

Я хочу только напечатать выбранные столбцы. Нужно ли включать все переменные в оператор INPUT? – Bigeyes

+0

Печать или использование средств или выполнение регрессии не имеет ничего общего с сообщением SAS, как читать текстовый файл в наборе данных. Если вы хотите распечатать некоторые переменные, используйте оператор VAR на шаге PROC PRINT. – Tom

+0

Итак, вы предлагаете использовать 'DSD' и' dlm'? – Bigeyes

 Смежные вопросы

  • Нет связанных вопросов^_^