在数据集中读取Proc Optmodel

时间:2016-05-18 16:07:43

标签: sas dataset mathematical-optimization

我有一个名为 zip5size 的数据集,如下所示:

zip    district     volume  
22123  springfield  1234
10001  new york     567
20001  dc           8910
20005  dc           1112
10005  new york     1314

zip 变量的格式为字符, volume 变量的格式为数字。

我正在尝试将数据读入我的proc optmodel代码,如下所示:

proc optmodel;
  set <str> zips;
  set <str> districts;
  num volume;
  read data zip5size into zips=[zip] districts=[district] volume=volume;
quit;

我收到以下错误:

  

目标'区'必须是数字或字符串,找到一组。

为什么SAS在设置拉链和从我的数据集中读取zip变量时没有问题,但它在设置区域和从我的数据集读取分区变量时有问题?

1 个答案:

答案 0 :(得分:1)

proc optmodel中,set是索引集。例如:

data dat; 
   input zip $ district $ volume;
datalines;
22123  springfield  1234
10001  new york      567
20001  dc           8910
20005  dc           1112
10005  new york     1314
;

proc optmodel;
  set <str> model_zips;
  set <str> model_dist;
  num vol_zips{model_zips};
  num vol_dist{model_dist};
  read data dat into model_zips=[zip] vol_zips=volume;
  read data dat into model_dist=[district] vol_dist=volume;
  print vol_zips;
  print vol_dist;
quit; 

会将您的模型添加到由邮政编码和地区索引的数组中。这是关于如何建模1D和2D变量的good tutorial