我正在尝试从XLSX Excel文件创建一个SAS表,如下所示 . 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
收集表格如下:
proc import datafile = have out=want DBMS = excel;
GETNAMES=YES; MIXED=YES; SCANTEXT=YES; USEDATE=YES; DATAROW=5;
run;
问题是 Proc Import
采用数字格式的第3行中的列名称与Excel文件的其余部分一样,因此SAS将 "."
而不是列名称(如 Date
或 Rate
)放置,因为SAS不将它们理解为数值 .
我发现 proc import
选项如 DATAROW=5
来读取第五行的数据,而 MIXED=YES
表示Excel表包含数字和字符值 . GETNAMES=YES
从表中获取列名,并根据您的理解 SCANTEXT=YES
扫描文本 . 但是,即使有这些选项,我也得到了如下所示的SAS表 . 整个SAS表格是数字格式,因此无法从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表中的列名的任何想法?
1 回答
好 . 我找到了解决方案 . 我应该刚刚添加了一个简单的选项,如
RANGE=A3:G2000
. 在一个非常奇怪的问题,我得到选项DATAROW=5
错误,所以我删除它 . 所以代码变成:现在它有效 . 但是
RANGE
选项并没有写在每个网页上,很难找到 .同样非常奇怪的是,SAS无法意识到像“Date”这样的字符值应该是字符格式 . 但是当你使用Range选项时它会实现它吗?