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

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
ewdprocedury_pobieranie_bazy_szkol [2014/07/31 19:50]
t.zoltak
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  ​= "rodzaj" ​          ​# dozwolone wartości: "​gimn.",​ "​LO",​ "​LP",​ "​T"​ +typSzkoly ​= "typ" ​ # dozwolone wartości: "​gimn.",​ "​LO",​ "​LP",​ "​T"​ 
-zapiszDlugi ​  = "nazwa_pliku_csv" ​ # wpisać, lub NULL jeśli plik w formacie szerokim ma nie być zapisywany +zapis     = "nazwa_pliku.csv"
-zapiszSzeroki = "​nazwa_pliku_csv" ​ # wpisać, lub NULL jeśli plik w formacie szerokim ma nie być zapisywany +
-zrodloODBC ​   = "​EWD" ​             # dostosować+
  
-library(RODBCext) +setwd("​~/​Desktop/"​
-setwd("​setwd("​~/​Desktop/"​)+library(EWDdane)
  
-dozwoloneRodzaje ​= c("​gimn.",​ "​LO",​ "​LP",​ "T") +dozwoloneTypy ​= c("​gimn.",​ "​LO",​ "​LP",​ "​T"​) 
-przyrostki ​      = c("​g" ​   , "​lo",​ "​lo",​ "t") +if (typSzkoly ​%in% dozwoloneTypy) { 
-if (rodzajSzkoly ​%in% dozwoloneRodzaje) { +  ​daneSzkol ​pobierz_dane_szkol(2006:​as.numeric(format(Sys.time(),​ "​%Y"​)),​ 
-  ​przyr przyrostki[dozwoloneRodzaje ​== rodzajSzkoly] +                                 ​typSzkoly,​ idOke FALSE, daneAdresowe ​TRUE) %>% 
-  # samo pobieranie +    ​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 ​rok, id_szkoly AS id_szkoly_stronaid_szkoly_ewdid_szkoly_oke+  daneSzkol = within(daneSzkol{ 
-      ​typ_szkolypublicznadla_doroslychspecjalnaprzyszpitalna+    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(itypSzkolyidOke TRUEdaneAdresowe ​FALSE
-    ​WHERE id_szkoly > 0 AND rok > 2005 +    kody = select(kodyid_szkoly, id_szkoly_oke,​ matura_miedzynarodowa
-    ORDER BY id_szkoly_ewdrok;", +    ​if ​(!(typSzkoly %in% c("LO", "LP", ​"​T"​))) { 
-    rodzajSzkoly,​ +      ​kody ​select(kody-matura_miedzynarodowa
-    fetch=TstringsAsFactors=+    } 
-  ​+    ​maska ​= names(kody) != "id_szkoly
-  ​odbcClose(p) +    names(kody)[maska] ​paste0(names(kody)[maska], "_", i) 
-   +    daneSzkol = suppressMessages(left_join(daneSzkol,​ kody)) 
-  # trochę ręcznego tuningu z nazwami zmiennych (do stylu "dawno temuprzed bazą SQL"+  ​} 
-  names(szkoly) = sub("id_szkoly_ewd", ​paste0("id_" , przyr), names(szkoly)) +  ​rm(kody) 
-  ​names(szkoly) ​sub("​id_szkoly_oke"​paste0("​kod_",​ przyr), names(szkoly)+  maska = unlist(lapply(daneSzkol,​ class)) == "logical
-  # matura międzynarodowa nie ma nic wspólnego z gimnazjami +  ​daneSzkol[, maska] = lapply(daneSzkol[, maska], as.numeric) 
-  if (rodzajSzkoly=="​gimn."​) szkoly = szkoly[, ​names(szkoly) != "ib"] +  ​write.csv2(daneSzkol, zapis, row.names = FALSE, na = "",​ fileEncoding = "​UTF-8"​) 
-  # TERYT w jedną zmienną +} else { 
-  szkoly = within(szkoly, {teryt = 10000 * wojewodztwo + 100 * powiat + gmina}) +  ​stop("​Niedozwolony typ szkoły!")
-  szkoly ​szkoly[, !(names(szkoly%in% c("​powiat"​, "gmina"))] +
-  ​# jeśli pobieramy technika, typ szkoły może być uznany za zmienną logiczną +
-  ​if (is.logical(szkoly$typ_szkoly)) szkoly$typ_szkoly ​= "T" +
- +
-  ​# ew. zapis formy długiej +
-  if (!is.null(zapiszDlugi)) write.csv2(zapiszDlugi, row.names=FALSE,​ na="",​ fileEncoding="​UTF-8"​) +
-   +
-  ​# przekształcenie do postaci szerokiej+
 } }
- 
- 
- 
 </​code>​ </​code>​
  
ewdprocedury_pobieranie_bazy_szkol.1406829004.txt.gz · ostatnio zmienione: 2014/07/31 19:50 przez t.zoltak