Sas 列名并非全部导出

Sas 列名并非全部导出,sas,Sas,我有sas数据集并尝试导出到csv。它包含大约5000列,每列都需要导出。但是当我导出数据时,所有的行都包括在内,但只包括大约前2000个列名。有人知道如何在这里包括所有的列名吗?我检查了一些关于Lrecl的信息,可能会有所帮助,但我不知道如何应用于列名 无需使用PROC EXPORT来写入分隔文件。要编写数据,可以使用一个简单的数据步骤 data _null_; set mydata ; file "myfile" dsd ; put (_all_) (+0); run;

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

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

data _null_;
   set mydata ;
   file "myfile" dsd ;
   put (_all_) (+0);
run;
要包含标题行,您需要做更多的工作

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

proc transpose data=mydata(obs=0) out=names; 
  var _all_;
run;

data _null_;
  file "myfile" dsd ;
  set names;
  put _name_ @ ;
run;
然后可以在附加实际数据的步骤中使用FILE语句的MOD选项

data _null_;
   set mydata ;
   file "myfile" dsd mod;
   put (_all_) (+0);
run;
确保设置的记录长度足以容纳所有变量名。默认记录长度32767字节只为平均变量名留出5个字符的空间,并且仍然可以容纳5000个名称。将lrecl=500000选项添加到文件语句中。值太大不应该是问题,只要它不超过操作系统上SAS允许的值。通常,上限约为1到1000万个字符。

使用具有较大LRECL=的fileref指定导出文件=。导出将根据LRECL设置剪裁一行的最大字符数

例如:

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的SAS默认设置为32767。这就是导出向导输出被剪裁的原因。

您是如何导出文件的?显示您使用的代码。或者,如果您使用了一些菜单,请详细说明您的操作。@Tom我首先尝试了从导出选项简单导出;我还使用了简单的代码作为proc export data=Tmp1yr outfile='temp.csv';跑请将其他信息发布为对您的问题的编辑,不要将其保留在评论中。它不会按预期显示。列名称在excel中分为三行。中断位置与SAS停止导出我的列名的点相同。但至少它只导出了格式不正确的所有列名。添加了有关如何更改逻辑记录长度最大行长度以允许每行有更多空间容纳名称和数据的说明。明白了!谢谢