楼主: 肝贝
3393 4

input小数点 [推广有奖]

  • 12关注
  • 1粉丝

幸儿

博士生

48%

还不是VIP/贵宾

-

威望
0
论坛币
675 个
通用积分
1.0042
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
294 点
帖子
192
精华
0
在线时间
264 小时
注册时间
2013-11-9
最后登录
2019-11-19

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data;
input a 3.0 b 3.1 c 4.1 d 4.1;
datalines;
123 123 12.3 1.23
;
run;
proc print;
run;

data;
input a 3.0 @1 b 3.1 @5  c 4.1 @9 d 4.1 @13;
datalines;
123 123 12.3 1.23
;
run;
proc print;
run;

菜鸟想问,为什么第一段代码,读入时c,d是空值啊,但是第二段代码是正确的,求大牛帮忙!!多谢多谢~~~~

二维码

扫码加我 拉你入群

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

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

关键词:Input put 小数点 Lines print 小数点

I'll never let go.
沙发
seven74 发表于 2015-3-3 01:01:43 |只看作者 |坛友微信交流群
因为啊,第一段代码中
input a 3.0得到a是第一个值123,
然后要input b 3.1,就去读下一个值,得到123,不符合格式,跳过,去读下一个,得到12.,不符合格式跳过,知道读在最后一个的前三位时,得到1.2才符合format 3.1,这时已经没data可以读了,所以c和d都是missing
注意period前面的是width,包含小数点的
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

使用道具

藤椅
pobel 在职认证  发表于 2015-3-3 08:05:07 |只看作者 |坛友微信交流群
对于第一段代码,应该是这样的:INPUT语句执行的时候:
1. 变量a,informat是3.0,读入前三位是“123”,因此变量的值是123;
2. 变量b,informat是3.1,读入接下来的三位“ 12”,变量的值是1.2;
3. 变量c,informat是4.1,读入后面的4位“3 12”,SAS并不能将这个值用4.1读入,因此将c设为空值;
4. 变量d,informat是4.1,读入接着的4位“.3 1”,SAS同样不能用4.1读这个值,因此d也设为空值。

通过下面的代码可以查看SAS每读一个变量后所在的位置:data;
infile cards column=col;
input a 3.0 @;
put "after a col is:" col;
input b 3.1 @;
put "after b col is:" col;
input c 4.1 @;
put "after c col is:" col;
input d 4.1 @;
put "after d col is:" col;
datalines;
123 123 12.3 1.23
;
run;




另外,如果能在INPUT语句加上:,就能解决这个问题:
data;
input a : 3.0 b : 3.1 c : 4.1 d : 4.1;
put (_all_)(=);
datalines;
123 123 12.3 1.23
;
run;


和谐拯救危机

使用道具

板凳
seven74 发表于 2015-3-4 03:56:05 |只看作者 |坛友微信交流群
pobel 发表于 2015-3-3 08:05
对于第一段代码,应该是这样的:INPUT语句执行的时候:
1. 变量a,informat是3.0,读入前三位是“123”,因 ...
你说的是对的,我试了一下datalines只写前两个数字,出来的结果是123,1.2,0.3,. 看来的我的理解有问题啊,以为这时list input,所以从空格读到空格,原来这种指定了格式又没有加:就不是了,那这算是哪种类型的input呢?

另外,第二段代码也有点问题,如果想要读出来的数据和datalines一样的话,那些@要放在变量名前面

使用道具

报纸
肝贝 发表于 2015-3-17 14:30:42 |只看作者 |坛友微信交流群
seven74 发表于 2015-3-4 03:56
你说的是对的,我试了一下datalines只写前两个数字,出来的结果是123,1.2,0.3,. 看来的我的理解有问题啊, ...
谢谢您帮忙,基础总是那么重要,看来我还要好好学习学习啊!!

使用道具

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

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

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

GMT+8, 2024-4-27 23:14