我想获得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;
谢谢。
答案 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程序。