当我将 SAS 数据集导出到 csv 时;它正在修剪字符中的所有前导空格。
请帮助我保留 csv 输出中的所有前导空格。使用的语句是:
Proc Export Data = Globl_Mth_Sumry
OutFile = "&GMUPath.\20&RptYr._&RptMt.\03 Output\01 GMU\&Brnd_Abbr.\&Brnd._&Mkt._Globl_Mth_Sumry_&RptMt.&RptYr.&NeuronQTR..csv"
DBMS = CSV Replace;
Run;
因此,有一列包含国家/地区列表,如下所示
亚洲
印度
中国
ETC。
但 csv 文件显示如下:-
亚洲
印度
中国。
请帮忙。
我发现这是一个有趣的问题,很大程度上是因为我确信我知道答案......却发现我不知道。
从技术上讲,这是一个解决方案,如果您时间紧迫,也许就足够了,尽管我怀疑它太笨重,无法以实际方式使用。首先,我生成数据(使用 $CHAR8. 输入以保留前导空格),然后使用固定列输出而不是列表输出来输出它。
data test;
input
@1 x $CHAR8.
@9 y $CHAR8.;
format x y $char8.;
datalines;
USA China
Canada N Korea
Russia Mexico
;;;;
run;
data _null_;
file "c:\temp\test.csv" lrecl=80 dropover;
set test;
if _n_ = 1 then do;
put "x,y";
end;
put @1 x $char8. @9 "," @10 y $char8.;
run;
不幸的是,使用 DBMS=CSV 似乎不允许 $CHAR8。按照您的预期运行。我不知道为什么会这样。我期望的解决方案是这样写:
data _null_;
file 'c:\temp\test.csv' delimiter=',' DROPOVER lrecl=32767;
if _n_ = 1 then /* write column names or labels */
do;
put
"x"
','
"y"
;
end;
set TEST;
put x $ :char8. y $ :char8.;
run;
这本质上是由 PROC EXPORT 打印到日志的代码,然后使用 :$CHAR8。在每个变量之后。无论出于何种原因,这(以及许多其他类似的事情)都不起作用。 ODS CSV 似乎也不适用于保留前导空格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)