从 Excel 行导入 SAS 列名称

Importing SAS column names from Excel row

我正在尝试从如下所示的 XLSX Excel 文件创建 SAS table。 SAS 列名将位于 Excel 文件中的第 3 行,并从第 5 行读取数据。

     A         B       C       D        F    ...
1 
2
3   Date     Period  Rate  Rate down Rate up ... 
4 
5 2015-04-30   1     0.25     0.23     0.27  ...
6 2015-05-31   2     0.21     0.19     0.23  ...
.  .........................................
.  .........................................

我正在使用 proc import 收集 table 如下:

proc import datafile = have out=want DBMS = excel; 
GETNAMES=YES; MIXED=YES; SCANTEXT=YES; USEDATE=YES; DATAROW=5; 
run;

问题是 Proc Import 像 Excel 文件的其余部分一样采用数字格式的第 3 行中的列名,因此 SAS 将 "." 而不是像这样的列名DateRate 因为 SAS 不将它们理解为数值。

我发现 proc import 选项,例如 DATAROW=5 从第五行读取数据, MIXED=YES 表示 Excel-table 包括数字和字符值。 GETNAMES=YES 从 table 中获取列名,SCANTEXT=YES 扫描您可以理解的文本。但是,即使使用这些选项,我也得到了与下面相同的 SAS table。整个 SAS-table 是数字格式,所以它无法解析来自 Excel:

的名称
     F1     F2   F3    F4    F5   ...
1     .      .   .     .     .    ...
2     .      .   .     .     .    ...
3 30APR2015  1  0.25  0.23  0.27  ...
4 31MAY2015  2  0.21  0.19  0.23  ...
. ...............................
. ...............................

知道如何将 XLSX 文件的第 3 行作为我在 SAS 中的列名导入吗table?

好的。我找到了解决方案。我应该添加一个简单的选项,如 RANGE=A3:G2000。在一个非常奇怪的事情中,选项 DATAROW=5 出错了,所以我删除了它。所以代码变成:

proc import datafile = have out=want DBMS = excel; 
GETNAMES=YES; MIXED=YES; SCANTEXT=YES; USEDATE=YES; RANGE='A3:G2000'; 
run;

现在可以了。但是那个RANGE选项不是每个网页都写的,很难找到。

同样很奇怪的是,SAS 无法意识到像 "Date" 这样的字符值应该是字符格式。但是当你使用范围选项时它会意识到这一点?