Narzędzia użytkownika

Narzędzia witryny


ewdprocedury_pobieranie_bazy_szkol

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
ewdprocedury_pobieranie_bazy_szkol [2014/07/31 19:23]
t.zoltak utworzono
ewdprocedury_pobieranie_bazy_szkol [2015/07/10 17:03] (aktualna)
t.zoltak
Linia 1: Linia 1:
 +====== Eksport z bazy danych informacji o szkołach ======
  
 +Skrypt pobiera informacje o szkołach z bazy korzystając z funkcji pakietu EWDdane.
 +Na raz można pobrać informacje tylko o szkołach jednego typu.
  
-====== Eksport ​z bazy danych o szkołach ======+Starsze rozwiązania,​ wykorzystujące ODBC i odtwarzają konwencję nazywania kolumn ​z bazy szkół prowadzonej kiedyś jeszcze w pliku SPSSa, można odszukać w poprzednich wersjach strony (nie ma gwarancji, że będą działać na obecnej wersji bazy).
  
 <​code>​ <​code>​
-rodzajSzkoly ​= "gimn." # "​gimn."​|"​LO"​|"​LP"​|"​T"​ +typSzkoly ​= "typ" ​ dozwolone wartości: ​"​gimn."​"​LO"​"​LP"​"​T"​ 
-plikWyjscie="baza gimn.csv" ​ # dostosować +zapis     = "nazwa_pliku.csv"
-zrodloODBC = "​EWD" ​          # dostosować+
  
-library(RODBCext) +setwd("​~/​Desktop/"​
-setwd("​setwd("​~/​Desktop/"​)+library(EWDdane)
  
- +dozwoloneTypy ​= c("​gimn.",​ "​LO",​ "​LP",​ "​T"​) 
-dozwoloneRodzaje ​= c("​gimn.",​ "​LO",​ "​LP",​ "​T"​) +if (typSzkoly %in% dozwoloneTypy) { 
-przyrostki ​      c("​g" ​   ​, "lo", ​"​lo"​"​t"​) +  daneSzkol ​pobierz_dane_szkol(2006:​as.numeric(format(Sys.time(), "%Y")), 
-if (rodzajSzkoly ​%indozwoloneRodzaje{ +                                 ​typSzkolyidOke = FALSE, daneAdresowe = TRUE) %>% 
-  ​przyr przyrostki[dozwoloneRodzaje ​== rodzajSzkoly] +    filter(id_szkoly > 0
-  ​odbcConnect(zrodloODBC+  ​lata sort(unique(daneSzkol$rok),​ decreasing ​TRUE) 
-  ​szkoly ​sqlExecute( +  ​daneSzkol ​select(daneSzkol, -rok, -wielkosc_miejscowosci,​ -rodzaj_gminy,​ 
-    p+                     ​-matura_miedzynarodowa
-    "SELECT rokid_szkoly AS id_szkoly_stronaid_szkoly_ewd AS id_?id_szkoly_oke AS kod_?, +  ​daneSzkol ​within(daneSzkol{ 
-      typ_szkolypubliczna, dla_doroslych,​ specjalna, przyszpitalna+    ​oke = c("​Wrocław", ​"​Gdańsk"​"​Kraków"​"​Poznań"​"​Łódź"​"​Kraków"​
-      nazwaadresmiejscowoscpnapocztawielkosc_miejscowosci AS l_mieszk+            "​Warszawa"​"​Wrocław"​"​Kraków"​"​Łomża"​"​Gdańsk"​"​Jaworzno"​
-      ​id_wojewodztwa AS wojewodztwoid_powiatu AS powiatid_gminy AS gmina, +            "​Łódź"​"​Łomża"​"​Poznań"​"​Poznań"​)[floor(teryt_szkoly / 10^4/ 2] 
-      matura_miedzynarodowa AS ib +  ​}
-    FROM (SELECT * FROM szkoly WHERE typ_szkoly= ?AS szkoly +  ​for (i in lata{ 
-      JOIN szkoly_dane USING (id_szkoly) +    kody = pobierz_dane_szkol(i, typSzkoly, idOke TRUE, daneAdresowe ​FALSE) 
-    WHERE id_szkoly > 0 AND rok > 2005 +    kody select(kodyid_szkoly, id_szkoly_oke,​ matura_miedzynarodowa
-    ORDER BY id_szkoly_ewd,​ rok;",​ +    if (!(typSzkoly ​%in% c("​LO"​"​LP",​ "​T"​))) { 
-    przyr, przyr, rodzajSzkoly +      ​kody select(kody-matura_miedzynarodowa)
-    fetch=T, stringsAsFactors=F +
-  ) +
-  ​odbcClose(baza+
-  +
-  if (rodzajSzkoly=="​gimn."​szkoly ​szkoly[names(szkoly!= "​ib"​] +
-  for (i in 1:​ncol(szkoly)) { +
-    if (all(unique(szkoly[!is.na(szkoly[, i]), i]) %in% c(0,1))) { +
-      ​szkoly[, i] c(FALSETRUE)[szkoly[, i] + 1]+
     }     }
 +    maska = names(kody) != "​id_szkoly"​
 +    names(kody)[maska] = paste0(names(kody)[maska],​ "​_",​ i)
 +    daneSzkol = suppressMessages(left_join(daneSzkol,​ kody))
   }   }
 +  rm(kody)
 +  maska = unlist(lapply(daneSzkol,​ class)) == "​logical"​
 +  daneSzkol[, maska] = lapply(daneSzkol[,​ maska], as.numeric)
 +  write.csv2(daneSzkol,​ zapis, row.names = FALSE, na = "",​ fileEncoding = "​UTF-8"​)
 +} else {
 +  stop("​Niedozwolony typ szkoły!"​)
 } }
- 
- 
- 
 </​code>​ </​code>​
  
ewdprocedury_pobieranie_bazy_szkol.1406827384.txt.gz · ostatnio zmienione: 2014/07/31 19:23 przez t.zoltak