楼主: saximi
5976 2

[问答] 请教INPUT中冒号的用法问题 [推广有奖]

  • 0关注
  • 0粉丝

高中生

90%

还不是VIP/贵宾

-

威望
0
论坛币
420 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
6511 点
帖子
29
精华
0
在线时间
16 小时
注册时间
2012-11-15
最后登录
2016-6-13

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
程序一:
data a;
infile datalines dsd;
input col1 :$9. col2 :$25.;
datalines;
aa,"AA AA"
bb bb,"BB BB,BB"
;
proc print data=a noobs;
run;
输出:
col1        col2
aa          AA AA
bb bb     BB BB,BB

程序二:
data a;
infile datalines dsd;
input col1 $9. col2 :$25.;
datalines;
aa,"AA AA"
bb bb,"BB BB,BB"
;
proc print data=a noobs;
run;
输出:
col1               col2
aa,"AA AA      "
bb bb,"BB      BB

请问,关于上面两个程序,为何input中把 col1 :$9改成 col1 $9之后,逗号分隔符不起作用了?
我只知道当空格为分隔符时,:$可以让变量在遇到第一个空格时,即使长度还未读够也会完成当前变量的输入,
但是当用了dsd选项后,此时的分隔符变成了逗号,这时变量名后面的冒号到底起什么作用呢?

二维码

扫码加我 拉你入群

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

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

关键词:Input put infile Lines print 程序

有冒号也就是modified list, sas会先读取数值直到碰到一个分隔符然后再赋予那个值一个为9的length.这个9并不控制sas去读多少个column.
如果没有冒号就变成formated input了 这时的9既会控制sas读取column的数量也就是读9格, 也会赋予值一个9的length. 这就造成了程序1和2输出的结果不一样了.

使用道具

藤椅
saximi 发表于 2015-6-3 22:43:05 |只看作者 |坛友微信交流群
万分感谢!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 23:56