全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6419 2
2015-06-02
程序一:
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选项后,此时的分隔符变成了逗号,这时变量名后面的冒号到底起什么作用呢?

二维码

扫码加我 拉你入群

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

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

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

二维码

扫码加我 拉你入群

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

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

2015-6-3 22:43:05
万分感谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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