【问题标题】:Reading out Data using PUT in SAS在 SAS 中使用 PUT 读取数据
【发布时间】:2019-06-21 09:17:25
【问题描述】:

我通常使用 PROC EXPORT 将数据从 SAS 读取到 csv 或 .dat 文件。

我得到了一个使用 PUT 语句的读数,但我找不到一个如何使用对我有用的示例。

我现在拥有的是:

DATA TC_LEVEL_JUNE01;
FILE "C:\Users\JUNE01.csv"
    LRECL = 7353;
    PUT
    @5 VAR1 $20.
    @25 VAR2 $20.
    @45 VAR3 2.
;
RUN;

但这只是将数据更改为 1 行数据集。

【问题讨论】:

  • 不确定“读出”是什么意思,但是您的数据步骤没有读取任何数据,因此没有要写入的数据。
  • SAS 附带了 ds2csv() 宏。通常是从数据集创建 CSV 的最快/最简单的方法。只需谷歌它以了解更多详细信息。

标签: sas export-to-csv


【解决方案1】:

为了在操作系统中创建一个csv 输出文件,请使用DATA _NULL_。数据步骤没有SET 语句,因此没有要处理的数据行。因为您有DATA TC_LEVEL_JUNE01,它将创建一个单行输出数据集一个输出文件。不知道为什么 LRECL=7353 当 put 语句会创建一个 46 个字符的行时。

这更接近于您的固定列输出所需的内容(下游处理可能不需要逗号?):

DATA _NULL_;  /* do not create an output data set */
  SET TC_LEVEL_JUNE01;  /* read record from this data set */
  FILE "C:\Users\JUNE01.csv" LRECL = 7353;  /* place output from PUT in this file */

  PUT /* 'Export' three columns of data */
    @5 VAR1 $20.
    @25 VAR2 $20.
    @45 VAR3 2.
  ; 
RUN;

对于 real PUT 填充 csv 还需要逗号分隔和双引号字符值。

例如:

data _null_;
  set sashelp.class;
  file 'c:\temp\class.csv' dlmstr=',' dsd;
  put name sex age ;
run;

来自FILE 帮助(我的粗体字)

DSD(分隔符敏感数据)

指定包含嵌入分隔符的数据值,例如 制表符或逗号,用引号引起来。 DSD 选项使您能够将包含嵌入式分隔符的数据值写入 LIST 输出。对于其他类型的输出(例如,格式化、列和命名),此选项将被忽略。重复数据值中包含的任何双引号。当变量值包含分隔符且FILE语句中使用DSD时,生成输出时变量值用双引号括起来

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多