众所周知,SAS需要特别注意句子中的引号。
E.g。
%let quoted="I'd like to";
data temp;
set temp;
quoted=""ed";
run;
提交时会遇到错误。
实际上我需要将数据复制到另一个数据集中,其中有很多记录包含引号。分配时,错误发生者和数据步骤停止执行,导致其余代码无效。所以在这种情况下,不可能通过添加重复的引号来修改原始数据集,这是没有意义的。
因此,不必添加重复的内容,例如“我想”,是否有其他方法可以避免错误,或者使数据步骤保持执行?
谢谢,
答案 0 :(得分:5)
使用宏语言(包括%let命令)时,您不希望使用引号来标识文本字符串。要在字符串中放置单引号,必须使用宏实用程序掩码函数之一,例如%str()。使用%let在宏变量中放置单个不匹配引号的正确语法如下所示。单引号前面的%符号是一个转义字符,用于告诉SAS应将以下字符(单引号)用作文字。另请注意,我已从%let中删除了双引号,因为它们不是必需的。
%let quoted=%str(I%'d like to);
data temp;
quoted=""ed";
run;
干杯 罗布
答案 1 :(得分:2)
我不确定你在实际情况下想要达到的目的,但在上述情况下,可以解决在数据步骤中删除双引号的问题。
%let quoted="I'd like to";
data temp;
set temp;
quoted="ed;
run;