在Excel'中导出SAS数据集;s";文本(MS-DOS)“;格式

在Excel'中导出SAS数据集;s";文本(MS-DOS)“;格式,sas,tab-delimited-text,Sas,Tab Delimited Text,我需要将数据集导出为文本文件,用于可能在Unix上运行的古老批处理过程。该文件有一列,所有字段都是数字 我想创建一个文本文件,模拟Excel创建文本(MS-DOS)文件的方式: 将工作簿另存为制表符分隔的文本文件,以便在MS-DOS上使用 操作系统,并确保制表符、换行符和 其他字符的解释正确。仅保存活动的 床单 实现这一点的最佳方法是什么?,这是一组非常有限的字符。如果你没有任何特殊的角色,你就很好。如果确实有特殊字符,则需要将编码页更改为,以保证字符兼容性。这可以通过数据集选项完成 data

我需要将数据集导出为文本文件,用于可能在Unix上运行的古老批处理过程。该文件有一列,所有字段都是数字

我想创建一个文本文件,模拟Excel创建文本(MS-DOS)文件的方式:

将工作簿另存为制表符分隔的文本文件,以便在MS-DOS上使用 操作系统,并确保制表符、换行符和 其他字符的解释正确。仅保存活动的 床单

实现这一点的最佳方法是什么?

,这是一组非常有限的字符。如果你没有任何特殊的角色,你就很好。如果确实有特殊字符,则需要将编码页更改为,以保证字符兼容性。这可以通过
数据集
选项完成

data have;
    input var$;
    datalines;
ElNiño
ElNino
;
run;

proc export data=have(encoding=pcoem437)
            file='C:\Directory\want.txt'
            dbms=tab 
            replace;
run;
。通过更改
encoding=
选项,可以看到输出中的差异

data have;
    input var$;
    datalines;
ElNiño
ElNino
;
run;

proc export data=have(encoding=pcoem437)
            file='C:\Directory\want.txt'
            dbms=tab 
            replace;
run;
,这是一组非常有限的字符。如果你没有任何特殊的角色,你就很好。如果确实有特殊字符,则需要将编码页更改为,以保证字符兼容性。这可以通过
数据集
选项完成

data have;
    input var$;
    datalines;
ElNiño
ElNino
;
run;

proc export data=have(encoding=pcoem437)
            file='C:\Directory\want.txt'
            dbms=tab 
            replace;
run;
。通过更改
encoding=
选项,可以看到输出中的差异

data have;
    input var$;
    datalines;
ElNiño
ElNino
;
run;

proc export data=have(encoding=pcoem437)
            file='C:\Directory\want.txt'
            dbms=tab 
            replace;
run;

如果只有一列,那么分隔符并不重要。您可以非常轻松地使用数据步骤编写文件

data _null_;
   set have ;
   file 'myfile.txt' ;
   put VAR1 ;
run;
如果您想用列名添加一个额外的行,那么在PUT语句之前添加它

  if _n_=1 then put 'VAR1';

如果您担心是否需要为行尾生成LF或CRLF,您可以使用FILE语句上的
TERMSTR=
选项来控制它。

如果只有一列,则分隔符无关紧要。您可以非常轻松地使用数据步骤编写文件

data _null_;
   set have ;
   file 'myfile.txt' ;
   put VAR1 ;
run;
  if _n_=1 then put 'VAR1';
如果您想用列名添加一个额外的行,那么在PUT语句之前添加它

  if _n_=1 then put 'VAR1';

如果您担心是否需要为行尾生成LF或CRLF,您可以使用FILE语句上的
TERMSTR=
选项来控制它。

MS-DOS?!你是说21年前被Windows 95取代的Microsoft操作系统?我相信一个古老的批处理过程正在处理这个文件。很抱歉,我不知道它是否是msdos,可能是Unix。我只需要文件的输出方式与Excel的输出方式相同。如果只有一列,则分隔符无关紧要。您应该了解使用数据的进程的实际要求。特别是如果它不是在MS-DOS上运行,它就不可能期望它使用MS-DOS特定的代码页437。MS-DOS?!你是说21年前被Windows 95取代的Microsoft操作系统?我相信一个古老的批处理过程正在处理这个文件。很抱歉,我不知道它是否是msdos,可能是Unix。我只需要文件的输出方式与Excel的输出方式相同。如果只有一列,则分隔符无关紧要。您应该了解使用数据的进程的实际要求。特别是如果它不是在MS-DOS上运行,它不太可能使用MS-DOS特定的代码页437。那么回车和换行呢?应该使用哪一个?在十六进制中,回车将是“0D”,换行将是“0A”。您应该使用与您的系统兼容的编码选项。回车和换行呢?应该使用哪一个?在十六进制中,回车将是“0D”,换行将是“0A”。您应该使用与您的系统兼容的编码选项。
  if _n_=1 then put 'VAR1';