我需要将一些结果从SAS导出到Excel。到目前为止,我使用的是一个简单的proc export
,但是由于导出变得更加复杂(需要将多个proc result
和data sets
映射到一个工作表),所以我需要找到一个替代方法。看起来,ods excel
是一条路--我同意,它是高度可定制的--但是我面临一个问题,我不确定它是与SAS或Excel相关的。
问题:
当我有一个带有字符列的SAS数据集时,其中的数据是由点分隔的数字字符串,ods export
到Excel将始终将这些数据转换为数字格式,这基本上会使数据不可读。例如:
character in SAS "04.2000" will become "4,2" in Excel (Standard format)
MWE:
data test;
input date $;
datalines;
04.2000
10.2001
;
ods excel file="date.xlsx";
proc print data=test;
run;
ods excel close;
proc导出将正确打印此数据,而不进行自动转换。这是SAS还是Excel方面的东西?在使用proc export
时,我可以做些什么来获得与ods excel
相同的结果呢?
发布于 2020-06-12 02:39:18
若要绝对强制<month>.<year>
日期表示值成为Excel中的字符串,请将其呈现为公式。即使在“null”编辑单元格之后,该值也不会更改(F2,输入)。
示例:
data test;
input datestring $;
forcedate = '="' || datestring || '"';
datalines;
04.2000
10.2001
;
ods excel file="date.xlsx";
proc print data=test;
run;
ods excel close;
可以将$CHAR<n>
格式应用于日期字符串。如果手动编辑单元格,则该字段仍将在Excel中被解释为数字。
示例:
data test;
input datestring $;
format datestring $char7.;
datalines;
04.2000
10.2001
;
ods excel file="date.xlsx";
proc print data=test;
run;
ods excel close;
Excel (图像)
您还可以使用ODS样式选项tagattr='type:String'
强制初始单元格呈现,但是在编辑(F2,Enter)时,EXCEL将再次计算单元格值。
示例:
proc print data=test;
var datestring / style=[tagattr='type:text'];
* String also works;
* var datestring / style=[tagattr='type:String'];
run;
发布于 2020-06-12 04:35:27
例如,您可以使用格式。工作很好:
data test;
input date $;
datalines;
04.2000
10.2001
;
run;
ods excel file="c:\temp\date.xlsx";
proc print data=test;
format date $20.;
run;
ods excel close;
发布于 2020-06-12 07:23:22
如果使用PROC报告,很可能可以通过定义语句来完成这一任务。
define date/ 'Date' format = $20. style(column)=[tagattr="type:text"];
https://stackoverflow.com/questions/62342380
复制