首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列名并不是全部导出的。

问列名并不是全部导出的。
EN

Stack Overflow用户
提问于 2019-11-13 20:33:45
回答 2查看 922关注 0票数 0

我有sas数据集,并试图导出到csv。它包含大约5000列,每个列都需要导出。但是,当我导出数据时,所有行都包括在内,但只包括了大约2000的列名。有谁知道如何在这里包含所有的列名吗?我查了一些关于Lrecl可能有帮助的东西,但我不知道如何应用到列名。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-13 20:43:37

不需要使用PROC导出来编写分隔文件。要编写数据,可以使用一个简单的数据步骤。

代码语言:javascript
复制
data _null_;
   set mydata ;
   file "myfile" dsd ;
   put (_all_) (+0);
run;

要包含标题行,您需要做更多的工作。

首先,获取变量列表,并使用它写入标题行。

代码语言:javascript
复制
proc transpose data=mydata(obs=0) out=names; 
  var _all_;
run;

data _null_;
  file "myfile" dsd ;
  set names;
  put _name_ @ ;
run;

然后,可以在附加实际数据的步骤中使用FILE语句的MOD选项。

代码语言:javascript
复制
data _null_;
   set mydata ;
   file "myfile" dsd mod;
   put (_all_) (+0);
run;

请确保设置的记录长度足够长,足以容纳所有变量名。默认记录长度为32,767字节,仅为平均变量名留出足够的空间,使其为5个字符,并且仍然适合500个名称。将lrecl=500000选项添加到FILE语句中。过大的值不应该是一个问题,只要它不超过操作系统允许的SAS。一般来说,上限在1到1千万字符之间。

票数 1
EN

Stack Overflow用户

发布于 2019-11-14 00:02:59

使用具有大型EXPORT FILE=的fileref指定LRECL=。导出将根据LRECL设置剪辑一行(一行的最大字符数)。

示例:

代码语言:javascript
复制
data have;
  do row = 1 to 10;
    array my_column_name (5000) (1230001:1235000); * initialize the array with some large integers;
    output;
  end;
run;

* fileref for export.  lines output will 'clip' output at 1,000,000 characters;
filename widefile 'c:\temp\my_wide_data.csv' lrecl=1000000;

proc export data=have dbms=csv replace file=widefile;
run;

filename widefile;  * clear the fileref;

系统选项LRECL由导出向导使用,并且系统LRECL设置不能超过32767 (并且LRECL的默认设置为32767)。这就是为什么剪切导出向导输出的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58845201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档