将CSV文件导入SAS时,在INPUT部分中使用的格式

时间:2018-06-07 00:02:51

标签: csv input import sas format

我想获得INPUT部分中每个变量使用的格式列表。例如,假设我们有一个csv文件并手动将数据导入SAS。在代码部分,我们会像那样:

DATA WORK.SAS_data_1;
LENGTH
    A                  8
    B                $ 9
    C                  8
    D                  8
    E                  8 ;
FORMAT
    A                BEST1.
    B                $CHAR9.
    C                MMDDYY10.
    D                BEST1.
    E                BEST3. ;
INFORMAT
    A                BEST1.
    B                $CHAR9.
    C                MMDDYY10.
    D                BEST1.
    E                BEST3. ;
INFILE 'C:\Users\AppData\Local\Temp\SEG3592\SAS_data_1-ab6243ce7f064047b5e010c113d2f6a3.txt'
    LRECL=27
    ENCODING="WLATIN1"
    TERMSTR=CRLF
    DLM='7F'x
    MISSOVER
    DSD ;
INPUT
    A                : ?? BEST1.
    B                : $CHAR9.
    C                : ?? MMDDYY9.
    D                : ?? BEST1.
    E                : ?? BEST3. ;
RUN;

我想知道INPUT部分使用的格式,即:BEST1。对于A,$ CHAR9。对于B,MMDDYY9。对于C等。

我在SASHELP.CARS数据集中找到了汇总每个变量的格式和信息的代码,但我找不到INPUT部分中使用的格式。有谁知道在哪里找到它?有时(对于数值变量)这些格式可能不同。这是代码:

proc sql noprint ;
create table varlist as
select memname,varnum,name,type,length,format,informat, label
from dictionary.columns
where libname='SASHELP' and memname='CARS'
;
quit;

谢谢。

2 个答案:

答案 0 :(得分:2)

无法恢复用于特定数据集的原始输入代码。如果信息与INFORMAT语句一起使用,那么您可以看到(就像您在示例中所做的那样)。

但是确定是否像这样读取数据集:

data have;
  input x;
  datalines;
1
2
3
4
5
;;;;
run;

或者像这样:

data have;
  input @1 x 1.;
datalines;
1
2
3
4
5
;;;;
run;

甚至这个:

data have;
  input @1 x 12.;
datalines;
1
2
3
4
5
;;;;
run;

所有在SAS中看起来完全相同,并且具有完全相同的元数据。了解它们输入方式的唯一方法是访问输入程序并记录它。

答案 1 :(得分:0)

SAS不需要被告知如何将大多数字符串转换为值。在您的示例中,只有变量C需要使用特殊信息,以便SAS知道如何将文本解释为日期。

您可以使用INFORMAT语句将信息规范附加到数据集中的变量。然而,除非您仍在使用PROC FSEDIT,否则元数据在SAS中并没有真正起到太多作用。

如果要存储有关如何格式化文本文件(CSV文件是文本文件)的说明,则应将该信息存储到另一个文档(或数据库)中。或者只是保存SAS程序。