Ein neuer Datensatz im Open Data-Portal Berlins: ESF-geförderte Vorhaben des Landes Berlin 2014-2020
Aus der Beschreibung:
In der Förderperiode 2014-2020 stehen der deutschen Hauptstadt Berlin rund 215 Mio. EUR aus dem Europäischen Sozialfonds (ESF) zur Verfügung, die in die hier lebenden Menschen investiert werden können.
Schwerpunkte sind dabei die soziale Eingliederung benachteiligter Gruppen, die bessere Qualifizierung für einen Arbeitsplatz, die Bekämpfung der Jugendarbeitslosigkeit sowie die Optimierung der allgemeinen und beruflichen Bildung.
Zunächst muss der Datensatz korrekt eingelesen werden – das brauchte bei mir mehrere Versuche:
esf <- read.csv("esf.csv", sep = ";", fileEncoding = "UTF-8", dec = ",")
Da die CSV-Datei nicht mit Kommata sondern Semikola als separierenden Zeichen angelegt wurde, muss R das mittels des Attributs sep mitgeteilt werden. Damit Sonderzeichen korrekt dargestellt werden, wird außerdem auf das fileEncoding UTF-8 hingewiesen. Zu guter Letzt muss R auch wissen, dass die „Nachkommastellen“ nicht hinter einem Punkt (amerikanische Schreibweise), sondern eben hinter einem Komma stehen. Nur so werden die Euro-Beträge auch als Zahlen (class = numeric) und nicht als hier eher unbrauchbare Faktoren erkannt.
Ein Blick in die Struktur dieses Data Frames ergibt, dass die Variablen territoriale_umsetzungsmechanismen und finanzierungsform jeweils nur eine Ausprägung haben, nämlich „07 : Nicht zutreffend“ und „Nicht rückzahlbare Finanzhilfe“. Die Variable land besteht ebenso und naheliegenderweise nur aus der einen Ausprägung DE300. Auf diese Spalten kann ich also verzichten, so dass ich sie mittels der select-Funktion aus dem dplyr-Package „lösche“:
esf <- select(esf, -c(11,13,15))
Die Tabelle weist 641 Zuwendungen an 182 verschiedene Empfänger aus. Interessant wäre es also zu wissen, wieviel die verschiedenen Empfänger insgesamt aus dem ESF erhalten haben:
summen <- tapply(esf$gesamtbetrag_förderfähiger_ausgaben, esf$name_des_begünstigten, sum)
Diese neue Tabelle summen sortiere ich absteigend:
summen <- sort(summen, decreasing = TRUE)
Und lasse mir dann die Top10 der 182 Empfänger ausgeben:
head(summen,10)
Arbeit und Bildung e.V. Stiftung Naturschutz Berlin WeTeK Berlin gGmbH
9085780 5667636 4695658
Chance BJS gGmbH Beuth Hochschule für Technik Berlin BUS gGmbH
3349125 3086155 2958709
Personal_inform GmbH LKJ Berlin e.V. ComFort-Schulungszentrum GmbH
2882466 2777685 2776943
FrauenComputerZentrumBerlin e. V.
2697057
Das sind aber nur die Summen, die direkt aus dem ESF geflossen sind. Für jede ESF-Förderung muss – sofern ich die Tabelle wirklich richtig verstehe – die öffentliche Hand einen Teil beisteuern. Darüber gibt die Variable kofinanzierungssatz_in_prozent Auskunft:
summary(esf$kofinanzierungssatz_in_prozent)
Min. 1st Qu. Median Mean 3rd Qu. Max.
15.04 49.92 49.92 49.60 50.00 66.67
Wir sehen: Der Kofinanzierungssatz bewegt sich zwischen 15,04 und 66,67 Prozent. In Mittel und Median liegt er bei knapp unter 50 Prozent. Dieser Prozentsatz wird auf die ESF-Fördersumme noch aufgeschlagen.
Mich stört die Variable Themenfeld, denn dort besteht jede Ausprägung aus einer ID-Nummer gefolgt von einer Beschreibung, bspw. 117 - Förderung des gleichen Zugangs zum lebenslangen Lernen für alle Altersgruppen im formalen, nichtformalen und informellen...
Dadurch steht immer unerhört viel Text in den Zellen.
Also verwende ich die separate-Funktion aus dem tidyr-Package, um daraus zwei Spalten zu machen – das schreibe ich zur Sicherheit in eine neue Tabelle esf_sep:
esf_sep <- separate(esf, themenfeld, c("themenfeld", "beschreibung themenfeld"), " - ")
Und um ein paar weitere der für mich noch recht mysteriösen Funktionen aus dem dplyr-Package auszuprobieren, wende ich die group_by-Funktion auf die Empfänger an:
empf <- group_by(esf_sep, name_des_begünstigten)
Jetzt sollte ich mittels summarize, einigen Argumenten und ein wenig Magie schöne Übersichtstabellen erstellen können:
summarize(empf, Gesamtsumme = sum(gesamtbetrag_förderfähiger_ausgaben), 'Anzahl der Förderungen' = length(gesamtbetrag_förderfähiger_ausgaben))
# A tibble: 182 x 3 name_des_begünstigten Gesamtsumme `Anzahl der Förderungen` 1 A&QUA gGmbH 1796959. 23 2 ABBV GmbH 959359. 8 3 ABT gGmbH - Akademie für berufliches Training 1712346. 17 4 abw - gemeinnützige Gesellschaft für Arbeit, Bildung und Wohnen mbH 370433. 5 5 agens Arbeitsmarktservice gGmbH 509435. 9 6 AGRARBÖRSE Deutschland Ost e. V. 542946. 6 7 ajb GmbH Gemeinnützige Gesellschaft für Jugendberatung 692342. 2 8 Akelei e. V. 418609. 2 9 all2gethernow e.V. 321707. 1 10 Allianz deutscher Designer AGD e.V. 113616. 1 # ... with 172 more rows
Das ließe sich in ähnlicher Weise auf Postleitzahlen, Themenfelder oder sogar Zeiträume anwenden. Dafür müsste ich mich aber erst wieder mit den schrecklichen Datumsfunktionen vertraut machen.