【问题标题】:Print all columns SAS with delimiter使用分隔符打印所有列 SAS
【发布时间】:2016-03-07 06:54:22
【问题描述】:

我正在尝试打印一个分隔文件,而不必指定所有列。我可以接近,但数字列总是被引用:

DATA _NULL_;
  SET SASHELP.CARS (obs = 5 keep = Make Model EngineSize);
  FILE "foo.csv" DSD DLM=",";
  PUT (_all_) (~);
RUN;

foo.csv

"Acura","MDX","3.5"
"Acura","RSX Type S 2dr","2"
"Acura","TSX 4dr","2.4"
"Acura","TL 4dr","3.2"
"Acura","3.5 RL 4dr","3.5"

我怎样才能实现:

"Acura","MDX",3.5
"Acura","RSX Type S 2dr",2
"Acura","TSX 4dr",2.4
"Acura","TL 4dr",3.2
"Acura","3.5 RL 4dr",3.5

或:

Acura,MDX,3.5
Acura,RSX Type S 2dr,2
Acura,TSX 4dr,2.4
Acura,TL 4dr,3.2
Acura,3.5 RL 4dr,3.5

【问题讨论】:

  • 看到这个密切相关的question。我对这是否是一个骗局感到复杂,所以如果其他人认为是,我会关闭它 - 否则不会。

标签: sas file-writing datastep


【解决方案1】:

~ 要求引用。所以,你正在引用。

您可以改用&

DATA _NULL_;
  SET SASHELP.CARS (obs = 5 keep = Make Model EngineSize);
  FILE "c:\temp\foo.csv" DSD DLM=",";
  PUT (_all_) (&);
RUN;

& 实际上对数据没有影响(我们曾经有过一个关于它的问题,我不记得最终的答案,但基本上它似乎主要用于这个特定目的,甚至虽然这不是它的目的)。

【讨论】:

  • 顺便说一句,: 也可以正常工作。可能还有其他一些选择。
  • 谢谢@Joe!你有这些参考资料的链接吗?在知识库里爬了一会也没找到
  • 对于您如何完全按照您的要求进行操作并没有真正的参考。你基本上在做的是作弊。 put (a) (b) 功能的目的是应用通用格式/等。变量列表 (a) 中的所有变量。通常你可以把你的变量列表写出来;但是因为put _all_; 有一个特殊的功能,你必须通过强制它进入这个其他方法来覆盖它。您在第二对括号中添加的内容无关紧要:只是一些无害的东西,但允许 SAS 认为您正在将某些东西应用于_all_ 中的所有变量。
  • 格式列表可以使用(+0)。这对我来说似乎总是很清楚,它什么也不做,因为它只是将指针移动零个空格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 2013-05-23
相关资源
最近更新 更多