GAMS csv 读取问题

GAMS csv read issue

我正在尝试使用 MAC 读取具有以下格式的 .csv 文件:

;lon;lat
0;55,245594;25,066697
1;55,135613;25,070419
2;55,275683;25,203425

目前我正在做的是:

$call csv2gdx coords.csv id=d index=1 values=2..lastCol useHeader=y

sets
  i 
  c /x,y/
;

parameters
  dloc(i,c) 'locations'
;

$gdxin clients_csv.gdx
$load ___ ?

我想做的是读取参数dloc中的纬度,经度坐标,以便每个i都有一对坐标c,即lat,lon。

示例输出:

           x           y

i1      17.175      84.327

运行 您的代码从 csv2gdx 产生错误:

*** ErrNr = 15 Msg = Values(s) column number exceeds column count; Index = 2, ColCnt = 1

默认情况下,csv2gdx 需要用逗号分隔的条目,而您的数据中没有。您还可以通过选项将 semicolontab 定义为分隔符,但如果数据确实具有您发布的格式,则根本不需要调用 csv2gdx。您可以像这样直接包含数据:

Sets
  i 
  c
;

Table dloc(i<,c<) 'locations'
$include coords.csv
;

Display dloc;

更改输入数据格式后进行编辑:

错误信息还是一样。原因也是一样的:您使用了与默认分隔符不同的字段分隔符。如果您使用选项 fieldSep=semiColon 切换它,您将意识到您的小数点分隔符对于 csv2gdx 也是非默认的。但这也可以改变。这是整个代码(调整后的 csv2gdx 调用和数据加载调整)。请注意,在 dloc.

的声明中使用 < 语法加载 dloc 时,集合 ic 得到隐式定义
$call csv2gdx coords.csv id=d index=1 values=2..lastCol useHeader=y fieldSep=semiColon  decimalSep=comma

Sets
  i 
  c
;

parameters
  dloc(i<,c<) 'locations'
;

$gdxin coords.gdx
$load dloc=d

Display dloc;
$exit\