R u bankarstvu
  • Zbirka riješenih zadataka
  • O Zbirci
  • 1. Import podataka
    • .csv & .txt
    • Microsoft Excel
    • Microsoft Access
    • SAS
    • .RData
  • 2. Manipulacije i agregacije podataka
    • str
    • ifelse & if
    • Nedostupne vrijednosti
    • %in%
    • as.Date
    • Petlje
    • Agregacije podataka
  • 3. Eksport podataka
    • .csv & .txt
    • Microsoft Excel
    • Microsoft Access
    • SAS
    • .RData
    • Eksport tabela i grafika u Microsoft PowerPoint
    • Eksport tabela i grafika u Microsoft Word
  • 4. Ostalo
    • ODBC konekcije
    • Sistemsko manipulisanje fajlovima i folderima
    • Pozivanje R funkcija i programa iz SAS-a
    • Pozivanje SAS programa iz R-a
    • Korisničke funkcije
    • Neto sadašnja vrijednost
    • Plan otplate kredita
    • Efektivna kamatna stopa
    • Moratorijum na otplatu kredita
    • Restrukturiranje kredita kroz produženje roka otplate
    • WoE & IV
    • WoE transformacije u regresionim modelima
    • Kalibracija rejting skale
    • Monotono grupisanje numeričkih risk faktora
  • Biografija
Powered by GitBook
On this page

Was this helpful?

  1. 4. Ostalo

Pozivanje R funkcija i programa iz SAS-a

SAS ima razvijen interfejs pokretanje R funkcija unutar same sesije preko SAS/IML modula.

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:

  1. eksportovati SAS tabelu test u R data frame test_r;

  2. započeti izvršenje R komandi;

  3. selektovati prvi red data framea test_r i tako kreirati novi data frame res_r;

  4. dodati novu varijablu avg_x data frameu res_r izračunatu kao prosječnu vrijednost varijable x iz data framea test_r;

  5. zaključiti izvršenje R komandi;

  6. eksportovati R data frame res_r u 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.

SAS ima funkciju za sistemsko izvršenje komandi koja se takođe može koristiti za izvršenje R programa.

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;
PreviousSistemsko manipulisanje fajlovima i folderimaNextPozivanje SAS programa iz R-a

Last updated 4 years ago

Was this helpful?