正确使用 dlm 和 dsd
Using dlm and dsd correctly
在我的文本文件中,数据由 |
分隔。所以我使用了代码
data TEST.something;
infile something dlm = '|' dsd missover firstobs=2;
input Proc_cde : .
Profession_Name : .
Lic_id : .
Expire_Date : mmddyy10.
Original_Date : mmddyy10.
Rank_Code : .
License_Number : .
Status_Effective_Date: mmddyy10.
Board_action_Indicator : .
License_Status_Description : .
Last_name : .
First_Name : .
License_Active_Description : .
e_mail .
;
但是在我的文本文件中,我缺少 ETIEXXX|MILTHYYY||||ACTIVE|23
等值
当我打印数据时,一些我想要的值没有显示,但其他的是正确的。它还在某些地方显示 ||
。数据已移动。
所以怎么了?
编辑
示例数据(仅列出几行)。
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|emi3th4ne@yahoo.com||||
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|||||
您的 INPUT 语句中的变量列表与数据第一行中的变量列表不匹配。您跳过了很多列。
如果需要,您可以通过在 INPUT 语句中添加一些虚拟变量来跳过列。您必须在 INPUT 语句中指定的任何信息前面添加 :
修饰符,以防止 SAS 读取分隔符。
length dummy ;
drop dummy ;
input
Proc_cde : .
...
First_Name : .
3*dummy
License_Active_Description : .
15*dummy
e_mail :.
;
在我的文本文件中,数据由 |
分隔。所以我使用了代码
data TEST.something;
infile something dlm = '|' dsd missover firstobs=2;
input Proc_cde : .
Profession_Name : .
Lic_id : .
Expire_Date : mmddyy10.
Original_Date : mmddyy10.
Rank_Code : .
License_Number : .
Status_Effective_Date: mmddyy10.
Board_action_Indicator : .
License_Status_Description : .
Last_name : .
First_Name : .
License_Active_Description : .
e_mail .
;
但是在我的文本文件中,我缺少 ETIEXXX|MILTHYYY||||ACTIVE|23
当我打印数据时,一些我想要的值没有显示,但其他的是正确的。它还在某些地方显示 ||
。数据已移动。
所以怎么了?
编辑
示例数据(仅列出几行)。
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|emi3th4ne@yahoo.com||||
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|||||
您的 INPUT 语句中的变量列表与数据第一行中的变量列表不匹配。您跳过了很多列。
如果需要,您可以通过在 INPUT 语句中添加一些虚拟变量来跳过列。您必须在 INPUT 语句中指定的任何信息前面添加 :
修饰符,以防止 SAS 读取分隔符。
length dummy ;
drop dummy ;
input
Proc_cde : .
...
First_Name : .
3*dummy
License_Active_Description : .
15*dummy
e_mail :.
;