SAS中无与伦比的引号问题

时间:2011-05-10 02:50:18

标签: sas quotation-marks

众所周知,SAS需要特别注意句子中的引号。

E.g。

%let quoted="I'd like to";
data temp;
    set temp;
    quoted="&quoted";
run;
提交时会遇到

错误。

实际上我需要将数据复制到另一个数据集中,其中有很多记录包含引号。分配时,错误发生者和数据步骤停止执行,导致其余代码无效。所以在这种情况下,不可能通过添加重复的引号来修改原始数据集,这是没有意义的。

因此,不必添加重复的内容,例如“我想”,是否有其他方法可以避免错误,或者使数据步骤保持执行?

谢谢,

2 个答案:

答案 0 :(得分:5)

使用宏语言(包括%let命令)时,您不希望使用引号来标识文本字符串。要在字符串中放置单引号,必须使用宏实用程序掩码函数之一,例如%str()。使用%let在宏变量中放置单个不匹配引号的正确语法如下所示。单引号前面的%符号是一个转义字符,用于告诉SAS应将以下字符(单引号)用作文字。另请注意,我已从%let中删除了双引号,因为它们不是必需的。

%let quoted=%str(I%'d like to);
data temp;    
    quoted="&quoted";
run;

干杯 罗布

答案 1 :(得分:2)

我不确定你在实际情况下想要达到的目的,但在上述情况下,可以解决在数据步骤中删除双引号的问题。

%let quoted="I'd like to";
data temp;
    set temp;
    quoted=&quoted;
run;