2014-09-21 8 views
0

Я хотел бы попросить вас о помощи с проблемой, с которой я имею дело в течение недели. Я искал везде решение. Официальный документ недостаточно точен и ничего не говорит по этому поводу.Чтение CSV-данных в индексированный набор

Проблема заключается в следующем: Это часть моего CSV-файла "food.csv". Здесь я скопировал только 6 столбцов, чтобы сделать небольшую предысторию данных.

Name Index A E K C 
Rice 1 0 0 0 0 
Lentils 2 0.39 5 0.05 44 
Carrot 3 167.05 7 132 59 
Potato 4 0.03 0 21 74 
Apple 5 0.38 1 6 0.04 

Я импортировать его в GNU MathProg линейного программирования с использованием table заявление. Проблема в том, что для каждого столбца я вынужден использовать отдельный параметр. Я бы предпочел индексировать столбцы в один двумерный параметр, чтобы я мог легко перебирать их.

set fields; 
param kc{i in 1..card(fields)}, symbolic; # symbolic only for the example, normally it's numeric 
table data IN "CSV" "food.csv": fields <- [Index], kc~Kcal; 

Проблема заключается таким образом, я должен использовать отдельный параметр для каждого столбца, если у меня есть как 40 collumns и двумя ограничений для каждого из этих колонн, она дает около 80 ограничений в разделенных линиях, если я хочу что-то изменить, мне нужно изменить 80 строк кода, потому что я не могу перебирать столбцы и упрощать его.

Здесь я помещаю то, что анализируется из файла CSV.

Display statement at line 213 
kc[1] = '1.12' 
kc[2] = '3.53' 
kc[3] = '0.41' 
kc[4] = '0.86' 
kc[5] = '0.48' 
kc[6] = '3.89' 
kc[7] = '0.36' 
kc[8] = '1.89' 
kc[9] = '8.84' 
kc[10] = '0.72' 
kc[11] = '1.2' 
kc[12] = '2.95' 
kc[13] = '6.54' 
kc[14] = '5.41' 
kc[15] = '0.81' 
kc[16] = '1.49' 
kc[17] = '0.4' 

А что было бы более interresting будет иметь что-то вроде:

kc[1][1] # first entry, first column 
kc[1][2] # first entry, second column 
kc[2][5] # second entry entry, fifth column 

ли имеет представление о том, как достичь кто это?

ответ

0

Ваши входные данные (то есть food.csv) не соответствуют вашим разобранным выходным данным.

Пожалуйста, разместите правильные данные (т. Е. Данные ввода и выходные данные желания), поэтому мы можем вам помочь.

Легко решить вашу проблему. Вы видите пример CSV-данных в файлах распространения GLPK/MathProg в папке ../examples/csv, модели переноса. Он использует csv как вход и выход.

Это пример синтаксиса (см. Ниже).

комплект I; /* консервные заводы */

комплект J; /* markets */

комплект K dimen 2; /* транспортная линия */

парам d {i в I, j в J}; /* расстояние в тысячи миль */

таблица tab_distance IN "CSV" "distances.csv": K < - [завод, рынок], d ~ расстояние;