Pozivanje R funkcija i programa iz SAS-a
Zadatak: Pokrenuti SAS sesiju i kreirati tabelu pod nazivom test sa varijablom x koja ima vrijednosti: 2, 48, 6, 9, 11, 100. Dalje, putem SAS/IML modula izvršiti sljedeće komande:
- eksportovati SAS tabelu test u R data frame - test_r;
- započeti izvršenje R komandi; 
- selektovati prvi red data framea - test_ri tako kreirati novi data frame- res_r;
- dodati novu varijablu - avg_xdata frameu- res_rizračunatu kao prosječnu vrijednost varijable- xiz data framea- test_r;
- zaključiti izvršenje R komandi; 
- eksportovati R data frame - res_ru SAS tabelu res.
SAS program:
/* kreirati tabelu test u radnoj biblioteci */
data test;
	input x;
	datalines;
	2
	48
	6
	9
	11
100
;
run;
proc iml; 
/* eksportovati SAS tabelu test u R data frame test_r */
call ExportDataSetToR("test", "test_r");
	/* zapoceti izvrsenje R komandi */
	submit / R; 
	res_r <- test_r[1, ]
	res_r$avg_x <- mean(test_r$x)
	#zakljuciti izvrsenje R komandi
	endsubmit; 
/* eksportovati data frame (res_r) generisan u R-u u SAS tabelu res */
call ImportDataSetFromR("res", "res_r"); 
quit;Napomena: Da bi prethodni primjer mogao da se uspješno izvrši neophodno je prvo omogućiti pokretanje R-a unutar SAS sesije. Više informacija i detalja o tom procesu mogu se naći na ovom linku.
Zadatak: Sačuvati, u nastavku, dat R program (R_from_SAS.R) i isti pozvati iz SAS sesije putem funkcije system.
R program:
#inicirati kolekciju argumenata
arg <- commandArgs(TRUE)
#izvdojiti prvi proslijedjeni argument: broj redova data framea
nr <- arg[1]
#izvdojiti drugi proslijedjeni argument: folder za eksport fajla
fp <- arg[2]
#kreirati data frame
db <- data.frame(x = 1:nr)
#eksportovati data frame u csv fajl
write.csv(db, file = paste0(fp, "db.csv"), row.names = FALSE)Napomena: Kako bi zadatak bio uspješno riješen, neophodno je prilagoditi putanje do R exe fajla, putanju do sačuvanog R programa (R_from_SAS.R) kao i putanju drugog sistemski proslijeđenog argumenta.
SAS sesija:
/* definisati putanju do R exe fajla */
%let prog = "C:\\Program Files\\R\\R-4.0.2\\bin\\i386\\Rscript.exe";
/* definisati putanju do R skripte */
%let scrp = "C:\\Users\\adjurovic\\Desktop\\R_from_SAS.R";
/* definisati argumente R skrpite */
%let args = 10 "C:\\Users\\adjurovic\\Desktop\\";
/* kreirati komandu za izvrsenje */
%let cmd = %unquote(%str(%'&prog. &scrp. &args.%'));
%put &cmd.;
data _null_; 
call system(&cmd.); 
run;Last updated
Was this helpful?
