统计211
标题:
DS2代码容易出错的地方(二) -- 引号
[打印本页]
作者:
藤菜
时间:
2013-6-15 23:30
标题:
DS2代码容易出错的地方(二) -- 引号
SAS 程序员从传统的数据步代码转向 DS2 代码时,最容易犯的一个错误就是引号。因为在 DS2 里双引号和单引号代表着不同的意思,而在数据步里面两者除了宏变量替换时效果不一样,其他作用几乎一样。
我们先来看一段数据步代码:
data demo_ds1;
str1 = 'value_1';
str2 = "value_2";
run;
proc print;
run;quit;
输出结果如下:
Obs str1 str2
1 value_1 value_2
现在我们将上面的代码转成对应的 DS2 代码:
proc ds2;
data demo_ds2(overwrite=yes);
method run();
str1 = 'value_1';
str2 = "value_2";
end;
enddata;
run;
quit;
proc print data=demo_ds2;
run;quit;
输出结果如下:
Obs str1 str2 value_2
1 value_1 . .
为什么结果是三列,而不是两列?
因为 DS2 将双引号引起来的字符串当成变量对待,而变量 value_2 既没有声明变量类型又没有赋值语句,这种情况下 SAS 默认将其定义为 double 类型,所以我们看到的输出结果中有两列数值型变量:str2 和 value_2。
注意:在 DS2 代码里,字符串必须使用单引号表示。
原文:
http://blog.sina.com.cn/s/blog_8 ... ml#bsh-24-244699908
欢迎光临 统计211 (http://tj211.com/)
Powered by Discuz! X3.2