2017-09-17 41 views
-1

我试图使用数据步骤将SAS数据集导入SAS。它是制表符分隔的。这是我的代码到目前为止。当我运行数据时,它会运行,但输出数据看起来都是错误的。有一个更好的方法吗?使用数据步骤将文件导入到SAS

data medicare; 
    infile '/folders/myfolders/sasuser.v94/medicare.sas' dlm='09'X; 
    input NPI NPPES_CREDENTIALS $ NPPES_PROVIDER_GENDER $ NPPES_ENTITY_CODE $ NPPES_PROVIDER_ZIP $ NPPES_PROVIDER_STATE $ PROVIDER_TYPE $ MEDICARE_PARTICIPATION_INDICATOR $ PLACE_OF_SERVICE $ HCPCS_CODE $ HCPCS_DRUG_INDICATOR $ LINE_SRVC_CNT BENE_UNIQUE_CNT BENE_DAY_SRVC_CNT AVERAGE_MEDICARE_ALLOWED_AMT STDEV_MEDICARE_ALLOWED_AMT AVERAGE_SUBMITTED_CHRG_AMT STDEV_SUBMITTED_CHRG_AMT AVERAGE_MEDICARE_PAYMENT_AMT sSTDEV_MEDICARE_PAYMENT_AMT; 
run; 
+0

.sas文件是一个程序,它是一个文本文件,但仅仅保存数据是非常不寻常的。该扩展通常用于SAS程序。 SAS数据集具有sas7bdat的扩展名。 – Reeza

+1

请发布您尝试导入的数据的示例。随意用虚拟值替换任何敏感信息。 – user667489

+3

你必须用'length'语句初始化你的变量。如果您没有,并且制表符分隔的文件中的某些字段长度超过8个字符,则它们将被截断。另外,根据文件内容的不同,您可能需要在'infile'语句中使用'dsd'和/或'missover'选项。 – user2877959

回答

1

如果你正在寻找一个初学者友好的方式,你可以先运行PROC进口。 SAS将猜测正确的数据类型,长度等。这里是一个例子:

filename imp "C:\Users\&sysuserid.\Documents\xxx.txt" encoding="cp1252" TERMSTR=CRLF; 

proc import datafile=imp 
out=imported_table 
dbms=dlm 
replace; 
delimiter='09'x; 
getnames=yes; 
guessingrows = 1000000; 
run; 

然后,数据码步骤SAS打印复制到日志并对其进行更新(如果需要)。