楼主: sarsmeng250
1557 3

[问答] 开始学习sas,遇到一个问题关于@与@@ [推广有奖]

  • 0关注
  • 0粉丝

初中生

28%

还不是VIP/贵宾

-

威望
0
论坛币
1247 个
通用积分
0.1500
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
82 点
帖子
6
精华
0
在线时间
18 小时
注册时间
2012-1-19
最后登录
2023-1-17

楼主
sarsmeng250 发表于 2017-8-31 11:21:06 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
SAS小书上的例子,原例子为
data test;
infile cards;
input x@;
input y ;
input z@@;
cards;
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17
;
run;
这时TEST中数据如下 微信截图_20170831111806.png
这个大家都懂,但是当我修改程序变成
data test;
infile cards;
input x@ y z@@;
cards;
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17
;
run;
时,再运行sas直接卡死,然后我终止运行发现TEST里面有上千万OBS,如下图 微信截图_20170831112020.png
有没有好心的朋友解释一下呢?
二维码

扫码加我 拉你入群

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

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

关键词:infile cards Input card test

沙发
sarsmeng250 发表于 2017-8-31 11:23:36
保存一下

藤椅
l1i2n3i4n5g 在职认证  发表于 2017-8-31 15:16:06
input x@ y z@@;
第一次循环:
默认从“1 2 3 4 5 6”的第1列开始读,得到x=1;
y前面的@是列指针,但是没有指定读哪一列,所以y=.;
重新从第1列开始读,所以z=1,这样就形成了第1个观测;
第二次循环:
@@要求SAS接着读取第1行数据以形成第2条观测,上一次循环读到了第1列,接着从第2列开始读,得到x=2;y前面的@没有指定读哪一列,所以y=.;
重新从第1列开始读,所以z=1,这样就形成了第2个观测;
之后就进入无限循环!






板凳
sarsmeng250 发表于 2017-9-1 09:20:47
l1i2n3i4n5g 发表于 2017-8-31 15:16
input x@ y z@@;
第一次循环:
默认从“1 2 3 4 5 6”的第1列开始读,得到x=1;
多谢大神帮助!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 12:03