楼主: 艾北
2893 9

optmodel里读入数组 [推广有奖]

  • 0关注
  • 0粉丝

初中生

71%

还不是VIP/贵宾

-

威望
0
论坛币
65 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
434 点
帖子
15
精华
0
在线时间
12 小时
注册时间
2010-9-15
最后登录
2013-1-28

楼主
艾北 发表于 2013-1-22 10:24:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
%macro try;
        %do k=1 %to &color_num.;
        proc sql;
              select otd_percent into:color_ratio%left(&k.)
            from or.tm_color_forecast2 (where=(cal_date="30NOV2012"d and pack="3SE1" and color="&&color%left(&k.)"));
        %end;

      proc optmodel;         
          number m=&color_num.;
          number color_ratio{c in 1..m};
          var n;
          do n=1 to m; color_ratio[n]="&&color_ratio||n"; end;
      quit;  

%mend;
%try;

部分程序如上,不知道有什么办法能把之前的那个数组读入进去。我试了写成上面这种情况的时候,报错是说
ERROR 575-782: The expression type, a string, does not match target, a number.
但是如果写成
color_ratio[n]=&color_ratio||n;的话,就把&识别成了and;
不过直接这样写是可以的:color_ratio[1]=&color_ratio1;。
求指教,万分感激


二维码

扫码加我 拉你入群

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

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

关键词:OPTMODEL model mode OPT Mod

沙发
a6566792 在职认证  发表于 2013-1-22 12:18:48
"&&color_ratio||compress(n)";       try this.

藤椅
艾北 发表于 2013-1-22 14:00:56
a6566792 发表于 2013-1-22 12:18
"&&color_ratio||compress(n)";       try this.
Thank you very much!

but log still shows
ERROR 575-782: The expression type, a string, does not match target, a number.

板凳
Imasasor 发表于 2013-1-22 14:08:58
color_ratio[n]="&&color_ratio&i"; end

试一下
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

报纸
艾北 发表于 2013-1-22 14:12:11
Imasasor 发表于 2013-1-22 14:08
color_ratio[n]="&&color_ratio&i"; end

试一下
&i 这个i是在外面再定义的一个宏变量吗,因为在optmodel里面,用do i=1 to &m. 的话,不会自动形成宏变量呢……

地板
Imasasor 发表于 2013-1-22 14:20:30
艾北 发表于 2013-1-22 14:12
&i 这个i是在外面再定义的一个宏变量吗,因为在optmodel里面,用do i=1 to &m. 的话,不会自动形成宏变量 ...
哦,是的,那你做一个宏循环吧. 那样就可以了
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

7
艾北 发表于 2013-1-22 15:06:22
Imasasor 发表于 2013-1-22 14:20
哦,是的,那你做一个宏循环吧. 那样就可以了
非常感谢!
我试了一下,写了下面这一段

      proc optmodel;         
          number m=&color_num.;
          number color_ratio{c in 1..m};
                  %macro readdata;
                  %do i=1 %to &color_num.;
              color_ratio[&i.]="&&color_ratio&i.";
                  %end;
                  %mend;
                  %readdata;
      quit;  


不过还是报之前的那种错:
ERROR 575-782: The expression type, a string, does not match target, a number.

8
Imasasor 发表于 2013-1-22 15:21:20
艾北 发表于 2013-1-22 15:06
非常感谢!
我试了一下,写了下面这一段
是不是要把你的数组定义成字符型的。$
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

9
艾北 发表于 2013-1-22 15:28:58
Imasasor 发表于 2013-1-22 15:21
是不是要把你的数组定义成字符型的。$
但是我这两个数组里存的都是数值型的内容,而且我直接这样写是可以的:color_ratio[1]=&color_ratio1;
所以我觉得问题应该在于引用方面,还没找到正确的方式……

非常感谢版主大人,O(∩_∩)O~

10
艾北 发表于 2013-1-23 09:32:15
Imasasor 发表于 2013-1-22 14:08
color_ratio[n]="&&color_ratio&i"; end

试一下
今天试出来了,应该是color_ratio[n]=&&color_ratio&i.;
好像加了双引号就成字符串,不加就是数值了,O(∩_∩)O~

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 20:54