我正在尝试将我的数据集从SAS导出为csv或xls格式,但是当我这样做时,带有换行符的列使我的excel混乱。有没有一种方法可以将SAS数据集导出到excel,以保留换行符?我还需要显示标签而不是列名,并且数据集大约很大。 150,000行。
这就是我所做的
proc export data=Final_w_label
outfile='work/ExtractExcel.csv'
dbms=csv label replace;
run; quit;
谢谢。
答案 0 :(得分:0)
请参阅文章底部的示例数据。
一种创建Excel可以轻松打开并显示嵌入换行符的导出的有效方法是使用XML。
libname xmlout xmlv2 'c:\temp\want.xml';
data xmlout.want;
set have;
run;
libname xmlout;
在Excel(365)中执行“文件/打开”,选择want.xml
文件,然后在出现的辅助As an XML table
对话框中选择Open XML
。
其他方式
还有其他方法可以将SAS数据移动到Excel可以解析的表单中。 Proc EXPORT将创建一个文本文件,在字符变量中嵌入了回车符(Excel用于单元格换行符)
proc export dbms=csv data=have label replace file='c:\temp\want.csv';
run;
导出的问题是Excel无法使用其向导正确导入数据。可能会有一个vbs解决方案来读取导出内容,但这可能比值得的麻烦更多。
另一种导出形式是dbms=excel
,它创建.xlsx
文件:
proc export dbms=excel data=have label replace file='c:\temp\want.xlsx';
run;
可以通过Excel打开此导出,并且所有列均正确。但是,数据值在具有嵌入式回车符的单元格中的初始视图表示将似乎没有换行符。使用F2
编辑模式进行的进一步检查将显示那里有那些嵌入的新行,按Enter(接受编辑)将使单元格视图显示嵌入的新行。您并不需要像预期的那样对每个单元格进行F2处理。
样本数据
data have (label="Lines within stanza are separated by newline character");
attrib
id length=8 label='Identity'
name length=$50 label='Poem name'
auth length=$50 label='Author'
stanza1-stanza20 length=$250;
;
array stz stanza:;
id + 1;
section = 1;
infile cards eof=last;
do while (1=1);
linenum + 1;
input;
select;
when (_infile_ = '--') leave;
when (linenum = 1) name = _infile_;
when (linenum = 2) auth = _infile_;
when (_infile_ = '') section + 1;
otherwise stz(section) = catx('0d'x, stz(section), _infile_);
end;
end;
last:
output;
datalines4;
Trees
Joyce Kilmer
I think that I shall never see
A poem lovely as a tree.
A tree whose hungry mouth is prest
Against the earth’s sweet flowing breast;
A tree that looks at God all day,
And lifts her leafy arms to pray;
A tree that may in Summer wear
A nest of robins in her hair;
Upon whose bosom snow has lain;
Who intimately lives with rain.
Poems are made by fools like me,
But only God can make a tree.
--
;;;;
run;