楼主: lizhewenbei
1753 8

请教大家,在设置年度虚拟变量时,为何数组指定的维数不是过多就是过少,要么就是越界 [推广有奖]

  • 15关注
  • 5粉丝

副教授

36%

还不是VIP/贵宾

-

威望
0
论坛币
309 个
通用积分
11.4770
学术水平
4 点
热心指数
13 点
信用等级
5 点
经验
9699 点
帖子
609
精华
0
在线时间
496 小时
注册时间
2008-2-6
最后登录
2024-1-9

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
3.png
2.png
1.png
二维码

扫码加我 拉你入群

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

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

关键词:虚拟变量

沙发
teqel 发表于 2015-2-7 11:43:48 |只看作者 |坛友微信交流群
array定义不对

使用道具

藤椅
lizhewenbei 学生认证  发表于 2015-2-12 19:46:00 |只看作者 |坛友微信交流群
teqel 发表于 2015-2-7 11:43
array定义不对
您好!感谢您,但这条语句我也用到过其他地方,没见到有提示错误啊。烦请您指点!

使用道具

板凳
天穹下 发表于 2015-2-12 22:36:25 |只看作者 |坛友微信交流群
array y(14) ys2000-y2013;
这里的y(14)指y(1),y(2),y(3),...y(14),所以接下来的do循环中定义t=2000 to 2013会下标越界,
do t=2000 to 2013;
if t=obs then y(t)=1;
以上这样写,当obs=2000时,y(t)=y(2000),你定义的数组最大的成员为y(14),所以肯定出界。
应改为:
do t=1 to 14;
if y(t)=obs then y(t)=1;else y(t)=0;
output;
end;
run;
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 100 热心帮助其他会员
lizhewenbei + 1 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 101  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

报纸
kunkunred 发表于 2015-2-13 06:06:32 |只看作者 |坛友微信交流群
ys2000-y2013 is abbreviation for ys2000  ys2001  ys2002 ...  y2013. There are 14 of them, so y(15) is long and y(13) is short. If you don't like counting, you can just use y{*} , in your case:
array y{*}  ys2000-y2013;
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 50 热心帮助其他会员
lizhewenbei + 1 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 51  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

地板
wpfwxn 发表于 2015-2-13 08:54:32 |只看作者 |坛友微信交流群
程序可以用隐式数组来替代,即在声明数组时不指定维度。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 1 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 1  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

7
lizhewenbei 学生认证  发表于 2015-2-14 11:30:54 |只看作者 |坛友微信交流群
天穹下 发表于 2015-2-12 22:36
array y(14) ys2000-y2013;
这里的y(14)指y(1),y(2),y(3),...y(14),所以接下来的do循环中定义t=2000 to 2 ...
对!您的这种方法确实没错。

使用道具

8
lizhewenbei 学生认证  发表于 2015-2-14 11:32:01 |只看作者 |坛友微信交流群
kunkunred 发表于 2015-2-13 06:06
ys2000-y2013 is abbreviation for ys2000  ys2001  ys2002 ...  y2013. There are 14 of them, so y(15) i ...
太好了,感谢

使用道具

9
lizhewenbei 学生认证  发表于 2015-2-14 11:32:36 |只看作者 |坛友微信交流群
wpfwxn 发表于 2015-2-13 08:54
程序可以用隐式数组来替代,即在声明数组时不指定维度。
对头!非常好的提示

使用道具

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

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

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

GMT+8, 2024-4-25 14:48