统计211

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3354|回复: 0
打印 上一主题 下一主题

DS2代码容易出错的地方(二) -- 引号

[复制链接]
跳转到指定楼层
1
发表于 2013-6-15 23:30:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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

评分

参与人数 1统计币 +2 收起 理由
fendou + 2 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


免责声明|关于我们|小黑屋|联系我们|赞助我们|统计211 ( 闽ICP备09019626号  

GMT+8, 2025-4-11 02:17 , Processed in 0.076003 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表