Dear,
I would like to know whether there is a possibility to read files from SAS into GAMS.
Instead of, for example, Excel or csv files, I would like to use SAS data inputs.
The reason of that is that on the machine, which we use to create our projects, we store a huge amount of data in SAS data base. And to avoid transferring aggregated data from SAS to something else and then to GAMS, I would like to know whether there is a direct way from SAS to GAMS.
All the best
irena
By the way, I have found some help in reading in other files: https://www.gams.com/latest/datalib_ml/ ... ddata.html.
Could be a possibility to re-program the examples in a way that it reads other files?
SAS files into GAMS
Re: SAS files into GAMS
Hi Irena
I would recommend to use R to read SAS-files. You can then export the data to a gdx file using gdxxrw.
Cheers
Renger
I would recommend to use R to read SAS-files. You can then export the data to a gdx file using gdxxrw.
Cheers
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Re: SAS files into GAMS
Dear Renger,
Thank you.
Yes, but the problem is that I do not want to use any indirect program between SAS and GAMS.
In this case you suggest I have to use R to direct a data file to GAMS from SAS.
Is there any way to do it without any indirect program?
Best
irena
Thank you.
Yes, but the problem is that I do not want to use any indirect program between SAS and GAMS.
In this case you suggest I have to use R to direct a data file to GAMS from SAS.
Is there any way to do it without any indirect program?
Best
irena
Re: SAS files into GAMS
Hi Irena
As far as I know this is not possible. However, you can run an R-script from within Gams using:
Cheers
Renger
As far as I know this is not possible. However, you can run an R-script from within Gams using:
Code: Select all
execute 'rscript myscript.R'
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Re: SAS files into GAMS
I am also trying to include R program, which you wrote, into GAMS.
Do I need to specify something more? Like for example:
- path to my R-script,
- global options at the beginning of the GAMS program to "tell" GAMS that I am going to read in data from R.
Best
Irena
Do I need to specify something more? Like for example:
- path to my R-script,
- global options at the beginning of the GAMS program to "tell" GAMS that I am going to read in data from R.
Best
Irena
Re: SAS files into GAMS
Hi Irena
If you have the path of R in your system variable "PATH", there is no need, otherwise, you either specify the whole path to the gams code
e.g. $call c:\R\bin\rscript myscript.R'
(note that I write '$call' as I assume that the data must be read in compile phase.)
or add it to your system variable "PATH"
No need to tell Gams anything more.
Cheers
Renger
If you have the path of R in your system variable "PATH", there is no need, otherwise, you either specify the whole path to the gams code
e.g. $call c:\R\bin\rscript myscript.R'
(note that I write '$call' as I assume that the data must be read in compile phase.)
or add it to your system variable "PATH"
No need to tell Gams anything more.
Cheers
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Re: SAS files into GAMS
Yes, it works! Thank you!
I am attaching the "screen-cut" from my program.
On the left hand side there is my code with specified variables. On the right hand side there is a screen-display from R-program (the first data-file with dimensions and variables). You can see which parameters I want to include in *.gdx file:
- from QEGDET to YOSSFAEDET;
How to load them all, with their dimensions, into *.gdx file? They come from a program, and not like usual from external file.
Best
Irena
I am attaching the "screen-cut" from my program.
On the left hand side there is my code with specified variables. On the right hand side there is a screen-display from R-program (the first data-file with dimensions and variables). You can see which parameters I want to include in *.gdx file:
- from QEGDET to YOSSFAEDET;
How to load them all, with their dimensions, into *.gdx file? They come from a program, and not like usual from external file.
Best
Irena
Last edited by Jarenka 5 years ago, edited 1 time in total.
Re: SAS files into GAMS
Hi Irena
You could use wgdx to write the dataframe to gdx and then load it. After that you assign the variables
If you have more data, you just define lst2, lst3, etc. for the data and read them with wgdx.lst("datafromR.gdx",lst, lst2, ...)
In Gams you can now easily load this from the gdx file and assign for example (you could even read the sets from alldata using gdx):
If this is taken a long time, you should split your model file from your data reading file, so you only have to run it once in a while.
CHeers
Renger
You could use wgdx to write the dataframe to gdx and then load it. After that you assign the variables
Code: Select all
lst <- wgdx.reshape(dataframeinR symDIm = 4, symName = "alldata")
wgdx.lst("datafromR.gdx", lst)
In Gams you can now easily load this from the gdx file and assign for example (you could even read the sets from alldata using gdx):
Code: Select all
QUADET(erd1det, erd2, akm, ard) = alldata(erd1det, erd2, akm, ard, "QUADET");
CHeers
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Re: SAS files into GAMS
So far is good.
Firstly, I had to install gdxrrw package by using *.zip file, which fortunately was under GAMS folder - and that was very good, because we work on the research machines (Windows 32-bit) that do not have access to the Internet due to confidentiality.
In the attachment, at the bottom, there is my R-code that reads dat-file consisting of 4 dimensions and 9 variables.
On the photo (foto1) you can see symDim = 15.
In fact I need only 4, because I have 4 dimensions and 11 variables. But the code (with symDim = 4) gave me an error - foto4.
In the second screen shot (foto2) I have the results from GAMS - this is a data set. This data set should include first 4 dimensions and the rest (in red circle) should be variables.
But it seems that all inputs are sets.
In the third screen shot (foto3) there is my program in GAMS. I couldn't make your code working:
I tried with "alldata" and with "DataFromR" option.
So far, the code is working in R-program, but it seems that GAMS doesn't read sets and parameters properly.
Best
Irena
Firstly, I had to install gdxrrw package by using *.zip file, which fortunately was under GAMS folder - and that was very good, because we work on the research machines (Windows 32-bit) that do not have access to the Internet due to confidentiality.
In the attachment, at the bottom, there is my R-code that reads dat-file consisting of 4 dimensions and 9 variables.
On the photo (foto1) you can see symDim = 15.
In fact I need only 4, because I have 4 dimensions and 11 variables. But the code (with symDim = 4) gave me an error - foto4.
In the second screen shot (foto2) I have the results from GAMS - this is a data set. This data set should include first 4 dimensions and the rest (in red circle) should be variables.
But it seems that all inputs are sets.
In the third screen shot (foto3) there is my program in GAMS. I couldn't make your code working:
Code: Select all
QUADET(erd1det, erd2, akm, ard) = alldata(erd1det, erd2, akm, ard, "QUADET");
So far, the code is working in R-program, but it seems that GAMS doesn't read sets and parameters properly.
Best
Irena