全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2919 3
2010-06-12
读取「数值尾端带有负号」的数字资料

SAS Taiwan news flash新闻中有一篇技术文件
讨论读取「数值尾端带有负号」的数字资料
在SAS9版之前可以使用REVERSE函数,9版以后可以用TRAILSGN.w这款informate读取
以下分别举例




REVERSE函数
有一笔数值资料,尾巴带有负号。
现在想把负号抓到前面
data test;
    input @1 chmt $ char8.; /*chmt变项从@1位置开始抓,设定为文字变项,即将变数数值以文字方式呈现*/
    sign=SUBSTR(left(reverse(chmt)),1,1);/*利用reverse函数将文字排列顺序反转,且向左left靠,最后SUBSTR抓第一位*/
    if sign='-' then
        amount=input(compress(chmt,'-'),8.)*-1;/*接着将变项sign抓到”-”的利用COMPRESS函数压缩(去除)掉,然后用input函数将文字转成数值,最后乘以负1*/
    else amount=input(chmt,8.);/*本来没有负号者就直接input函数转即可*/
    keep chmt amount;/*保留chmt变项与amount变项*/
    cards;
3010.05-
99.10-
70.35
0.00
549.22-
;
run;
因此转好就变成下面的输出



从SAS9版以后可以用TRAILSGN.w这款informate读取
TRANILSGN.w
可以用以下几种informate款来读取资料(这我没用过..真有趣)
  • “负号”在前端→用w.
  • “负号”在尾端→用COMMAw.读取且所得值需要乘以”-1,负1″
  • “负号”在尾端→用TRAILSGNw.
  • “括号”将数字括起来表示为负值者→用TRAILSGNw.
举例↓
变项名称分别为:leading, trailing1, trailing2,
data test2;
  input leading:4. trailing1:comma6.
              trailing2:trailsgn2. neg_paren:comma6.;/*利用不同informate读取下列四个变项资料,leading已经是预期的格式因此不用多作informat设定,另外三个变数需要额外处理*/
  trailing1=trailing1*-1;
  cards;
-111 222- 3- (444)
;
run;
下面是output结果,每个数值都已经将负号放在前端



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-6-13 10:30:53
好!学习了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-6-13 10:50:26
good example
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-6-13 14:52:55
脚在路上 发表于 2010-6-12 15:30
读取「数值尾端带有负号」的数字资料

SAS Taiwan news flash新闻中有一篇技术文件
讨论读取「数值尾端带有负号」的数字资料

从SAS9版以后可以用TRAILSGN.w这款informate读取
TRANILSGN.w
可以用以下几种informate款来读取资料(这我没用过..真有趣)
  • “负号”在前端→用w.
  • “负号”在尾端→用COMMAw.读取且所得值需要乘以”-1,负1″
  • “负号”在尾端→用TRAILSGNw.
  • “括号”将数字括起来表示为负值者→用TRAILSGNw.
举例↓
变项名称分别为:leading, trailing1, trailing2,
data test2;
  input leading:4. trailing1:comma6.
              trailing2:trailsgn2. neg_paren:comma6.;/*利用不同informate读取下列四个变项资料,leading已经是预期的格式因此不用多作informat设定,另外三个变数需要额外处理*/
  trailing1=trailing1*-1;
  cards;
-111 222- 3- (444)
;
run;
下面是output结果,每个数值都已经将负号放在前端



请问:如果    “括号”将数字括起来表示为负值者→用TRAILSGNw.   
那么为什么下面程序中用的是    neg_paren:comma6??
应该是笔误吧,那么到底用commaw  还是 trailsgnw呢?  
谢谢

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群