统计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