从Excel行导入SAS列名称

我想从下面的XLSX Excel文件创build一个SAS表。 SAS列名将是Excel文件中的第三行,并从第五行读取数据。

ABCDF ... 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收集表如下:

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

问题在于, Proc Import像Excel文件的其余部分一样以第三行的数字格式获取列名,因此SAS将"." 而不是像DateRate这样的列名,因为SAS不会将它们理解为数字值。

我发现像DATAROW=5 proc import选项从第五行读取数据,而MIXED=YES表示Excel表包含数字和字符值。 GETNAMES=YES从列表中获取列名, SCANTEXT=YES按照您的理解扫描文本。 然而,即使有了这些选项,我也得到了如下所示的SAS表。 整个SAS表格是数字格式的,所以它不能从Excelparsing名称:

  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 ... . ............................... . ............................... 

任何关于如何在SAS表中导入XLSX文件的第三行作为列名的想法?

好。 我find了解决scheme。 我应该添加一个简单的选项,如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选项并不是写在每一个网页上,都很难find。

同样很奇怪的是,SAS没有意识到像“Date”这样的字符值应该是字符格式。 但是当你使用Range选项时,它会实现它吗?