首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SAS导出问题,因为它提供了额外的双引号

SAS导出问题,因为它提供了额外的双引号
EN

Stack Overflow用户
提问于 2018-12-21 00:00:11
回答 1查看 1.6K关注 0票数 0

我正在尝试将SAS数据导出到CSV,sas数据集名称在此处为abc,格式为

LINE_NUMBER描述

524JG 24PC AMEFA复古餐具套装"DUBARRY“

我正在使用下面的代码。

代码语言:javascript
运行
复制
filename exprt "C:/abc.csv" encoding="utf-8";

proc export data=abc
outfile=exprt
dbms=tab;
run;

输出为

LINE_NUMBER描述

524JG“24件AMEFA老式餐具套装”“DUBARRY”“

所以在这里的描述之前和之后有双引号可用,而额外的双引号在DUBARRY word之后&之前。我不知道发生了什么。有人能帮我解决这个问题,让我明白这里到底发生了什么吗?

预期结果:

LINE_NUMBER描述

524JG 24PC AMEFA复古餐具套装"DUBARRY“

EN

回答 1

Stack Overflow用户

发布于 2018-12-21 00:53:23

不需要使用PROC EXPORT来创建分隔文件。你可以用一个简单的数据步骤来编写它。如果您想创建示例文件,那么只需在FILE语句上使用DSD选项即可。但请注意,根据您正在编写的数据,您可能会创建一个由于额外的不受保护的分隔符而无法正确解析的文件。此外,您还会遇到表示缺少值的问题。

让我们创建一个可用于测试的样本数据集。

代码语言:javascript
运行
复制
data have ;
  input id value cvalue $ name $20. ;
cards;
1 123 A Normal
2 345 B Embedded|delimiter
3 678 C Embedded "quotes"
4 .   D Missing value
5 901 . Missing cvalue
;

本质上,PROC EXPORT是使用DSD选项写入数据。如下所示:

代码语言:javascript
运行
复制
data _null_;
  set have ;
  file 'myfile.txt' dsd dlm='09'x ;
  put (_all_) (+0);
run;

这将产生一个如下所示的文件(用管道替换选项卡,以便您可以看到它们)。

代码语言:javascript
运行
复制
1|123|A|Normal
2|345|B|"Embedded|delimiter"
3|678|C|"Embedded ""quotes"""
4||D|Missing value
5|901||Missing cvalue

如果您只是删除DSD选项,那么您将得到一个如下所示的文件。

代码语言:javascript
运行
复制
1|123|A|Normal
2|345|B|Embedded|delimiter
3|678|C|Embedded "quotes"
4|.|D|Missing value
5|901| |Missing cvalue

请注意第二行看起来是如何具有5个值而不是4个值,这使得它不可能知道如何将其拆分为4个值。还要注意缺失值的最小长度至少为一个字符。

另一种方法是运行数据步骤,将PROC EXPORT生成的普通文件转换为您想要的变体格式。如果目标格式需要特殊字符,这也可能为您提供添加转义字符以保护特殊字符的位置。

代码语言:javascript
运行
复制
data _null_;
  infile normal dsd dlm='|' truncover ;
  file abnormal dlm='|';
  do i=1 to 4 ;
    if i>1 then put '|' @;
    input field :$32767. @;
    field = tranwrd(field,'\','\\');
    field = tranwrd(field,'|','\|');
    len = lengthn(field);
    put field $varying32767. len @;
  end;
  put;
run;

您甚至可以使此datastep足够智能,以计算第一行上的字段数,并使用它来控制循环,这样您就不必对其进行硬编码。

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

https://stackoverflow.com/questions/53872093

复制
相关文章

相似问题

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