Pozivanje SAS programa iz R-a
Zadatak: Sačuvati, u nastavku, dati SAS program (SAS_from_R.sas
) i isti pozvati iz R-a putem funkcije system
.
SAS progam:
/* definisati makro varijable od sistemski proslijedjenih argumenata */
%let lib_path = %scan(&sysparm., 1, " ");
%let nrow = %scan(&sysparm., 2, " ");
/* definisati putanju do biblioteke */
libname wd "&lib_path.";
/* kreirati tabelu test */
data wd.test;
do i = 1 to &nrow.;
x = i;
output;
end;
drop i;
run;
Napomena: Kako bi zadatak bio uspješno riješen, neophodno je prilagoditi putanje do SAS exe fajla, putanju do sačuvanog SAS programa (SAS_from_R.sas
) kao i putanju prvog sistemski proslijeđenog argumenta.
R sesija:
> #definisati putanju do SAS exe fajla
> sas.exe <- "C:\\Program Files\\SASHome\\SASFoundation\\9.4\\sas.exe"
> #definisati putanju do SAS programa
> sas.prg <- "C:\\Users\\adjurovic\\Desktop\\SAS_from_R.sas"
> #definisati prvi argument: putanju do SAS biblioteke
> arg.1 <- "C:\\Users\\adjurovic\\Desktop\\"
> #deinisati drugi argument: broj redova tabele
> arg.2 <- 10
>
> #definisati konacnu komandu za izvrsenje (cmd)
> exe.prg <- paste0(shQuote(sas.exe), " ", shQuote(sas.prg))
> arg.list <- paste0("-sysparm ", "'", arg.1, " ", arg.2, "'")
> cmd <- paste(exe.prg, arg.list)
>
> #izvrsiti SAS program u odnosu na poslate argumente
> system(cmd)
[1] 0
> #provjera
> #narednu komandu izvrsiti ukoliko haven paket vec nije instaliran
> #install.packages("haven")
> library(haven)
> #SAS data set import
> read_sas(paste0(arg.1, "test.sas7bdat"))
# A tibble: 10 x 1
x
<dbl>
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
Last updated
Was this helpful?