forked from CorrelAid/lernplattform
-
Notifications
You must be signed in to change notification settings - Fork 0
/
05_datenimport.Rmd
359 lines (298 loc) · 27 KB
/
05_datenimport.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
## **Datenimport und APIs**
[![License: CC BY 4.0](https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/deed.de)
*"Datenimport und APIs" von Nina Hauser, Frie Preu, Philipp Bosch in "R Lernen - der Datenkurs von und für die Zivilgesellschaft" von CorrelAid e.V. Lizensiert unter [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0/deed.de).*
Diese Woche geht es darum, wie Ihr Daten in R-Studio importieren könnt, um damit Analysen durchzuführen.
![*Video: Datenimport und APIs (30min)*](https://youtu.be/NA9QLeQsE9M)
[Hier](https://github.com/CorrelAid/lernplattform/blob/main/cheatsheets/05_cheatsheet-import.pdf){target="_blank"} findet Ihr zudem ein Cheat Sheet (engl.) zum Datenimport Daten aus Dateien.
### **Kernaussagen**
- Es gibt **zwei grundlegende Möglichkeiten** Daten zu importieren:
a) aus lokal oder remote gespeicherten **Dateiformaten** (XLSX, CSV, JSON, ...)
b) über **Datenabfragen** von Datenbanken und aus dem Internet (Abfragesprachen wie SQL oder über APIs und Web-Scraping)
- Um Dateien richtig importieren zu können, ist es wichtig herauszufinden, welches **Dateiformat** die Datei hat
- **Windows-User** können sich die Dateiendung über die Multifunktionsleiste auf der Registerkarte "Ansicht" anzeigen lassen: Aktiviert dort das Feld "Dateinamenerweiterungen" im Abschnitt "Ein-/Ausblenden"
- **Mac-User** navigieren zu ihrem Schreibtisch und können sich dort die Dateiendung über "Finder" -> "Erweitert" -> Alle Dateinamensuffixe einblenden" anzeigen lassen
- Der Import von CSV-, XLSX-, SPSS-, SAS und Stata-Dateien kann in RStudio **ohne Code** über "File" -> "Import Dataset" erfolgen
- Damit Ihr Fehler beim Importieren von Daten von Anfang an vorbeugt, solltet Ihr die **Datei vorab in einem Texteditor öffnen** (nicht immer möglich) und die folgende Checkliste beachten:
1) In welchem **Dateiformat** liegt die Datei vor?
2) Wo ist die Datei **gespeichert**?
3) Was gibt es hinsichtlich **Dateistruktur** zu beachten (Separatoren, fehlende Werte, etc.)?
- Wenn Ihr **deutschsprachige Dateien** importiert, müsst Ihr auf Zeichen wie "ä, ö, ü", Spaltentrenner (engl. Separator, im Deutschen ";") und Dezimaltrennzeichen (im Deutschen ",") achten, da dies besonders fehleranfällig ist (die meisten Datenanalyseprogramme arbeiten vorwiegend in englischer Sprache)
- Mit dem **`rio`-Package** könnt Ihr zahlreiche Dateiformate automatisch einlesen (hier geht es zur [Übersicht](https://cran.r-project.org/web/packages/rio/vignettes/rio.html){target="_blank"})
- Falls das nicht funktioniert, gibt es für jedes Dateiformat **zahlreiche Funktionen**, mit denen Daten geladen werden können
- Über **APIs** (zu dt. Schnittstellen) könnt Ihr Datenabfragen an externe Systeme über das Internet stellen
- Viele APIs können über einfach zu bedienende Funktionen aus **R-Packages** angesprochen werden, weshalb wir zuerst danach suchen sollten
**Überblick über die verschiedenen Dateiformate:**
```{r dateiformate_tabelle, results='asis'}
tabelle <- "
Dateiformat: | Dateistruktur: | Endung:
--------------|-------------------------------------------------------------------|---------------------------------
CSV-Datei | tabellarisch-strukturierte Textdatei | .csv
Excel-Datei | tabellarische Daten aus Microsoft Excel | .xls/.xlsx
GEOJSON | textbasiertes, strukturiertes Format mit geographischen Daten | .geojson
JSON | textbasiertes, strukturiertes Format | .json (zumeist aus API-Requests)
SAS | SAS-Export, der nicht in allen Anwendungen geöffnet werden kann | .sas
Shapefile | Kartographische Datei, die Koordinaten und Polygone enthält | .shp
SPSS | SPSS-Export, der nicht in allen Anwendungen geöffnet werden kann | .sav
Stata | Stata-Export, der nicht in allen Anwendungen geöffnet werden kann | .dta
Textdatei | allgemeine Textdateien | .txt
"
cat(tabelle)
```
### **Quiz**
```{r quiz_datenimport, echo=FALSE}
quiz(caption = NULL,
question("Welche Faktoren spielen beim Datenimport eine wichtige Rolle?",
answer("Das Dateiformat (erkennbar an der Dateiendung)", correct = TRUE),
answer("Die Dateistruktur mit Codierung, (Dezimal-)Trennzeichen, uvm.", correct = TRUE),
answer("Der Speicherort (lokal oder remote)", correct = TRUE),
answer("Die Art und Weise wie die Daten geladen werden sollen (einmalig, periodisch oder live)", correct = TRUE),
correct = "Richtig!",
incorrect = "Leider falsch: Alle vier Faktoren sind wichtig.",
allow_retry = TRUE,
try_again_button = "Nochmal versuchen"
),
question("An welcher Dateiendung erkennt Ihr Excel-Dateien?",
answer(".xls", correct = TRUE),
answer(".xlsx", correct = TRUE),
answer(".csv"),
correct = "Richtig!",
incorrect = "Leider falsch: Excel-Dateien enden mit .xls oder .xlsx. CSV-Dateien sind Textdateien - aber Ihr könnt sie natürlich in Excel öffnen.",
allow_retry = TRUE,
try_again_button = "Nochmal versuchen"
),
question("Woran erkennt Ihr CSV-Dateien?",
answer('An dem Trennzeichen ","'),
answer('An der Dateiendung ".csv"', correct = TRUE),
correct = "Richtig!",
incorrect = "Leider falsch: CSV-Dateien sind zwar in der Regel durch Kommata getrennt, es gibt allerdings auch CSV-Dateien, deren Spalten durch Semikolons, Pipes (senkrechte Striche) und Tabstopps getrennt werden.",
allow_retry = TRUE,
try_again_button = "Nochmal versuchen"
),
question("Welche Optionen habt Ihr lokale Dateien zu importieren?",
answer("Manuell über den File Explorer in RStudio (File -> Import Dataset)", correct = TRUE),
answer("Mit der Funktion import() des rio-Packages", correct = TRUE),
answer("Mit individuellen Funktionen aus verschiedenen Packages für die verschiedenen Dateiformate", correct = TRUE),
correct = "Richtig!",
incorrect = "Leider falsch: Ihr könnt von allen drei Optionen Gebrauch machen",
allow_retry = TRUE,
try_again_button = "Nochmal versuchen"
),
question("Können nur lokal gespeicherte Dateien importiert werden?",
answer("Ja"),
answer("Nein", correct = TRUE),
correct = "Richtig!",
incorrect = "Leider falsch: Auch das Laden von Dateien über Hyperlinks ist beispielsweise möglich.",
allow_retry = TRUE,
try_again_button = "Nochmal versuchen"
),
question("Warum ist es best practice Datenquellen live mit Analysetools zu verknüpfen?",
answer("Es ist leichter technisch umzusetzen."),
answer("Es garantiert, dass Daten aktuell und damit qualitativ hochwertiger sind.", correct = TRUE),
answer("Es ist nicht best practice."),
correct = "Richtig! Entscheidungen trefft Ihr damit auf Basis von aktuellen (und nicht eventuall auf der Basis von veralteten) Daten.",
incorrect = "Leider falsch: Zwar sind Live-Verknüpfungen schwer einzurichten, aber dafür sind die Daten auch aktuell. Entscheidungen trefft Ihr damit auf Basis von aktuellen (und nicht eventuall auf der Basis von veralteten) Daten.",
allow_retry = TRUE,
try_again_button = "Nochmal versuchen"
),
question("Um Datenquellen live zu verknüpfen, ist es immer notwendig, selbst Code zu schreiben, der mit einer API interagiert.",
answer("Wahr"),
answer("Unwahr", correct = TRUE),
correct = "Richtig! Ihr könnt dazu auch R-Packages nutzen, die von der R-Community zahlreich bereitgestellt wurden.",
incorrect = "Leider falsch: Ihr könnt dazu auch R-Packages nutzen, die von der R-Community zahlreich bereitgestellt wurden.",
allow_retry = TRUE,
try_again_button = "Nochmal versuchen"
)
)
```
### **Interaktive Übung**
Bisher haben wir den Datensatz "Plastics" über das `rio`-Package und den Link zu einem öffentlichen Server eingelesen. Mit [`rio`](https://cran.r-project.org/web/packages/rio/vignettes/rio.html){target="_blank"} könnt Ihr fast alle Dateiformate und -strukturen automatisch importieren - in der Theorie zumindest, manchmal klappt es leider nicht. Denn wir haben uns hier um drei wichtige Stellschrauben des Datenimports herumgemogelt: <br>
1. Die **Dateiendung** konnten wir ignorieren, da das `rio`-Package dies für uns automatisch erkennt. <br>
2. Der **Speicherort** wird über einen Web-Link und nicht über einen sog. Path (zu dt. Pfad) auf unserem Computer definiert. <br>
3. Die **Dateistruktur** wird automatisch erkannt. <br>
``` {r daten_einlesen_wdh, exercise = TRUE}
# Hier laden wir mit dem rio-Package und der Funktion "import()" unseren Datensatz.
data_raw <- rio::import('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-01-26/plastics.csv')
```
Daten können sowohl über (offene) URLs (Uniform Resource Locator, zu dt. Link) als auch über lokale Dateipfade importiert werden. Ersteres funktioniert für die meisten Packages intuitiv (siehe oben). Lesen wir Dateien ein, die lokal gespeichert sind, müssen wir den Path definieren. Dazu gibt es verschiedene Methoden, von denen jedoch nur eine wirklich sinnvoll ist: Arbeiten wir an Analysen in R, legen wir sowohl unser Skript als auch unsere Daten in einem dafür vorgesehenen **Ordner** ab, der "daten" heißt. Zu diesem Speicherort navigieren wir mithilfe der Funktion `here::here()`.
``` {r daten_einlesen_lokal, exercise = TRUE}
# Alternative für lokale Dateien, die in Eurem R-Projekt als CSV-Datei in einem Ordner namens "Daten hinterlegt wurden, mit dem "here"-Package (hier nur zum Zeigen)
data_processed <- rio::import(here::here('daten/bffp2019_plastics_processed.csv'))
head(data_processed)
```
Wie genau der Import von unterschiedlichen Dateitypen mit variierenden Dateistrukturen ohne das `rio`-Package funktioniert, schauen wir uns jetzt an.
##### CSV
Eine CSV-Datei (comma separated values, zu dt. Komma getrennte Werte) ist, wie der schon Name sagt, eine Datei in der die verschiedenen Datenwerte durch Kommata getrennt sind. Grundsätzlich entspricht **jede Zeile** einer **Beobachtung**. Die erste Zeile enthält allerding keine Werte, sondern die **Bezeichnungen für die entsprechende Spalte**. Sie wird **Header** genannt und wird genutzt, um auf bestimmte Spalten und Werte zuzugreifen.
Um CSV-Dateien zu lesen, benutzen wir häufig die `read.csv()`-Funktion des `readr`-Packages. Diese hat verschiedene Argumente, welche wir entsprechend unserer Dateistruktur setzen können:
``` {r exericse_csv, exercise = TRUE}
# install.packages("readr")
# Komma als Separator und Punkt als Dezimaltrennzeichen als Standard
data_raw <- readr::read_csv(
file = 'https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-01-26/plastics.csv', # Dateiname/Pfad zur Datei
col_names = TRUE, # Vorhandensein des Headers
skip = 0, # Festlegen, ob Zeilen übersprungen werden sollen
na = c("", "NA") # Definition, wie "NA"-Werte aussehen z.B. "" (leer), festlegen
)
head(data_raw)
```
Aber Achtung: Wer **Programme** (insb. Excel) in **deutscher Sprache** nutzt, exportiert CSV-Dateien häufig mit dem Separator ";" und dem Dezimal-Trennzeichen ",". Das führt zu Fehlern. Deutschsprachige CSV-Dateien müssen deshalb mit der Funktion `read.csv2()` importiert werden.
#### XLSX
Mit **Google Trends Daten** könnt Ihr erforschen, wonach die Welt gerade auf der Suchmaschine Google sucht. Das **Google Search Volume** (zu dt. Google Suchvolumen) bezieht sich dabei konkret auf die Anzahl der Suchanfragen, die Nutzer:innen zu einem bestimmten Suchbegriff innerhalb eines bestimmten Zeitraums eingeben. Ein hohes Volumen deutet auf hohes Interesse an einem Thema hin.
Wir haben für Euch zwei **XLSX-Dateien** erstellt, die zu den Suchbegriffen "beach clean up" (zu dt. Strand aufräumen), also Aktionen wie denen von "Break Free From Plastics", und "plastic pollution" (zu dt. Plastikverschmutzung) Daten enthalten. Das Arbeitsblatt "trends_over_time" stellt die Entwicklung des Google Search Volumes über die Zeit für die letzten fünf Jahre dar. "by_country" enthält die Entwicklung aufgeschlüsselt nach verschiedenen Ländern im Durchschnitt des letzten Jahres.
Hier laden wir mit der Funktion `readxl::read_excel()` das Arbeitsblatt (`sheet = ...`) "trends_over_time" der Excel-Datei "Plastic Pollution - Google Trends.xlsx" aus unserem Ordner "Daten" (`path = ...`), das Spaltenbezeichnungen enthält (`col_names = ...`) und in dem fehlende Werte zumeist durch "" (leer) gekennzeichnet sind (`na = ...`).
*Anmerkung: Zur Live-Verknüpfung mit den aktuellen Daten von Google gibt es in R das `gtrendsR`-Package. Dazu gleich mehr.*
```{r exercise_xlsx, exercise = TRUE}
#install.packages(readxl)
# Laden der Entwicklung des Suchbegriffs "Plastic Pollution" über die Zeit
googletrendstime_plasticpollution <- readxl::read_excel(
path = here::here("daten/Plastic Pollution - Google Trends.xlsx"), # Definition von Path und Dateinamen
sheet = "trends_over_time", # Definition des Arbeitsblatts
col_names = TRUE, # Deklarierung der Spaltennamen
na = c("", NA)) # Syntax fehlender Werte
head(googletrendstime_plasticpollution)
```
Ladet nun das Arbeitsblatt "by_country" der Datei "Beach Clean Up - Google Trends.xlsx". Kopiert dazu den Code von oben und passt den Dateinamen und das Arbeitsblatt an der richtigen Stelle an.
```{r exercise_excel, exercise = TRUE}
# Euer Code hier
```
```{r exercise_excel-solution}
# Laden des Arbeitsblattes "by_country" der Datei "Beach Clean Up - Google Trends.xlsx"
readxl::read_excel(
path = here::here("daten/Beach Clean Up - Google Trends.xlsx"), # hier ändern wir den Dateinamen
sheet = "by_country", # hier ändern wir den Arbeitsblattnamen
col_names = TRUE,
na = c("", NA))
```
```{r exercise_excel-check}
grade_this_code()
```
#### SPSS, SAS und Stata
Gerade in der akademischen Welt (oder den dort produzierten Datensätzen) werden
Euch hin und wieder auch Dateien mit anderen Endungen begegnen. Diese stammen
meist von **kostenpflichtigen Analyseprogrammen** wie SPSS oder STATA. Von welchem
Programm eure Daten stammen, erkennt ihr wie gehabt an der **Endung**:
- `.sav` steht für Daten aus SPSS
- `.dta` steht für Daten aus STATA
- `.sas7bdat"` steht für Daten aus SAS
R selbst hat übrigens auch ein **eigenes Format** in dem Ihr Dateien abspeichern könnt.
Wenn Ihr eine Datei mit der Endung `.RDATA` seht, wurde diese mit R erstellt und
lässt sich dementsprechend sehr einfach mit R einlesen. Wir raten Euch aber trotzdem
die Daten, wenn möglich, als `.csv` abzuspeichern, da dieses Format sehr weit verbreitet ist
und auch mit gängiger Software wie Excel geöffnet werden kann.
Um Dateien mit den oben genannten Formaten einzulesen, nutzen wir das `haven`
package. Die jeweiligen Datensätze dienen dabei nur der Veranschaulichung und
haben für unseren Kurs keine inhaltliche Bedeutung.
```{r otherformats_exercise, exercise = TRUE}
#install.packages("haven")
library(haven)
# SAS
sas_daten <- haven::read_sas(data_file = "http://libguides.library.kent.edu/ld.php?content_id=11205331")
# SPSS
sav_daten <- haven::read_sav(file = "http://calcnet.mth.cmich.edu/org/spss/V16_materials/DataSets_v16/Cars.sav")
# Stata
dta_daten <- haven::read_dta(file = "http://www.stata-press.com/data/r8/auto.dta")
```
Eine Besonderheit von `.dta` und `.sav` Daten sind **"Labels"**. Labels finden sich
häufig bei Umfragedaten. Prinzipiell sind diese Labels auch eine schöne Sache. Sie
liefern euch beispielsweise Informationen über eine bestimme Variable (über einen
kryptischen Variablennamen hinaus). Programme wie STATA oder SPSS haben eine eigene
Infrastruktur wie sie diese Labels als Metainformationen anzeigen. Wenn solche Daten
in R eingelesen werden, kann es aber manchmal zu Problemen mit den Labels kommen.
[Hier](https://www.pipinghotdata.com/posts/2020-12-23-leveraging-labelled-data-in-r/)
findet Ihr dazu Hilfe.
#### JSON
Normalerweise lesen wir JSONs nicht manuell ein, vielmehr sind sie **Teil der Antwort einer Datenabfrage**. Der Vollständigkeit halber findet Ihr hier trotzdem das Package `jsontlite` und die Funktion `read_json()` zum Einlesen von JSON-Dateien.
```{r json_exercise, exercise = TRUE}
# Einlesen einer JSON-Datei mit dem jsonlite-Package.
opengov_beispielsdaten <- jsonlite::read_json(here::here("daten/beispieljson.json"))
# Drucken des zweiten Elements
head(opengov_beispielsdaten[[2]])
```
#### Geo(-referenzierte) Daten
Um Karten zu erstellen, nutzt Ihr verschiedene geometrische Typen und müsst Eure Datensätze somit um unterschiedliche geographische Daten ergänzen (sog. Geocodierung). Bei der Darstellung von Punkten auf der Karte benötigt Ihr **Längen- und Breitengrad** der Orte, die Ihr visualisieren möchtet. Für eindimensionale Linien (z.B. Straßen) benötigt Ihr eine **Reihe an Punkten** mit dem jeweiligen Längen- und Breitengrad. Zweidimensionale Kartenbereiche werden mit Polygonen geocodiert. **Polygone** stellen kartographische Informationen dar - beispielsweise die Form und Lage von Deutschland auf einer Weltkarte. Diese Daten lesen wir mit dem Package `sf` und der Funktion `st_read()` ein. <br>
*Achtung: Damit der Import funktioniert müsst Ihr die gesamte ZIP-Datei, die Ihr laden wollt, in einem Ordner mit der hier gewünschten .shp-Datei ablegen - also auch alle Dateien mit anderen Endungen.*
```{r polygons_world, exercise = TRUE}
# install.packages("sf")
# Einlesen des globalen Shapefiles (geometrischen Datensatzes, erkennbar an .shp) über sf::st_read()
polygons_welt <- sf::st_read(here::here("daten/geospatial/ne_50m_admin_0_countries.shp"))
```
Unser Datensatz enthält zahlreiche Spalten mit zusätzlichen Informationen zu den Ländern der Welt. Uns interessiert hier die Spalte "`geometry`", die die kartographischen Informationen enthält.
```{r polygon_welt_exercise, exercise = TRUE}
# Betrachtung der Daten
head(polygons_welt$geometry)
```
Zur Veranschaulichung können wir nun die Polygone des Datensatzes `polygons_welt` veranschaulichen. Wir nutzen hier die `baseR`-Funktion `plot()`. Wie wir mit kartographischen Daten schönere und insb. interaktive Karten gestalten, lernt Ihr in Lektion 11 - Datenvisualisierung.
```{r polygon_welt__plot_exercise, exercise = TRUE}
# Erstellung eines einfachen Kartenplots
plot(polygons_welt$geometry)
```
Auch für Deutschland gibt es ähnliche Shapefiles:
```{r polygon_de_exercise, exercise = TRUE}
# Einlesen der Deutschlandkarte mit Bundesländern
polygons_deutschland <- sf::st_read(here::here("daten/geospatial/1000_NUTS1.shp"))
plot(polygons_deutschland$geometry)
```
Der Import von geographischen Daten folgt also der folgenden Checkliste:
1. Welche **geographische Ebene** soll visualisiert werden (Punkte, Striche oder Polygone)?
2. Wo kann ich zugehörige **Shapefiles** finden? <br>
*Tipp: [Hier](http://www.naturalearthdata.com/features/){target="_blank"} findet Ihr globale und beim [Bundesamt für Kartographie](https://gdz.bkg.bund.de/index.php/default/nuts-gebiete-1-1-000-000-stand-31-12-nuts1000-31-12.html){target="_blank"} deutsche Shapefiles. Einige können auch über Packages und Links geladen werden.*
3. Über welche **Schlüsselvariable** füge ich meinen Datensatz und die geographischen Daten zusammen? Gibt es (sprachliche) Hürden (Deutschland != Germany != DEU)?
#### APIs in R-Packages
Der Umgang mit APIs ist für Programmieranfänger:innen oft eine Herausforderung. Viele APIs sind aber bereits in passende **Packages** eingebettet, über die der Zugriff auf die Daten wesentlich leichter funktioniert. Über das Package `WDI` könnt Ihr beispielsweise **Daten der World Bank** laden, die Euch helfen können, Eure gesellschaftliche Herausforderung besser zu verstehen und zu kontextualisieren. In der Datenbank gibt es den Indikator "Terrestrial and marine protected areas (% of total territorial area)", der für die Planung von zukünftigen Aktivitäten und die Kommunikation mit Freiwilligen und Fördernden genutzt werden soll. Für "Break Free From Plastics" ist dieser Indikator spannend, weil in **Naturschutzgebieten** Flora und Fauna besser vor Plastikmüll geschützt sind. In Ländern, wo neben der hohen Müllmenge und der niedrigen Recyclingquoten, besonders wenige Gebiete als Naturschutzgebiete ausgezeichnet sind, könnte der Bedarf nach gemeinnützigen Organisationen wie "Break Free From Plastic", die die Natur von schädlichen Plastikmüll befreien, also besonders hoch sein.
*Anmerkung: Genau wissen wir das natürlich nicht, die Daten geben uns hier lediglich einen Hinweis darauf, wo der Bedarf groß sein könnte. Deshalb ist es wichtig die Annahmen, auf denen Entscheidungen basieren genau zu definieren und sich darüber Gedanken zu machen, ob die Datengrundlage für eine Entscheidung überhaupt ausreichend ist. Unsere Thesen können wir dann ggf. in Interviews mit Expert:innen (hier z.B. Naturschützer:innen) verifizieren.*
```{r wb, exercise = TRUE}
#install.packages("WDI")
# Daten der World Bank mit R-Package ziehen
wb_areas <- WDI::WDI(
country = "all", # Auswahl der Länder
indicator = "ER.PTD.TOTL.ZS", # Spezifikation des Indikators (Tipp: siehe Link in der Datenbank)
start = 2018, # Auswahl Zeithorizont: Anfang
end = 2018, # Auswahl Zeithorizont: Ende
language = "en" # Sprachauswahl
)
head(wb_areas)
```
Ladet nun den Datensatz zum Indikator ["Fish species, threatened" (EN.FSH.THRD.NO)](https://data.worldbank.org/indicator/EN.FSH.THRD.NO?view=chart){target="_blank"} für das Jahr 2018. Kopiert dazu den Code von oben und fügt den richtigen Indikatorschlüssel ein.
```{r exercise_wb, exercise = TRUE}
# Euer Code hier
```
```{r exercise_wb-solution}
# Daten der World Bank mit R-Package ziehen
WDI::WDI(
country = "all", # Auswahl der Länder
indicator = "EN.FSH.THRD.NO", # Spezifikation des Indikators (Tipp: siehe Link in der Datenbank)
start = 2018, # Auswahl Zeithorizont: Anfang
end = 2018, # Auswahl Zeithorizont: Ende
language = "en" # Sprachauswahl
)
```
```{r exercise_wb-check}
grade_this_code()
```
Daten mit APIs, die in R-Packages eingebettet sind, zu importieren, ist sehr einfach und wir sparen uns viel Zeit für die Datenbereinigung. Neben dem `WDI`-Package für die World Bank, gibt es noch viele **weitere, nützliche R-Packages**:
- `acled.api`-Package: Daten zu **bewaffneten Konflikten** von ACLED (zur [Doku](https://cran.r-project.org/web/packages/acled.api/index.html){target="_blank"}//mehr [Infos](https://acleddata.com/#/dashboard){target="_blank"})
- `datenguideR`-Package: Daten der **amtlichen Amtstatistik** in Deutschland (zum [Repo](https://github.com/CorrelAid/datenguideR){target="_blank"}//mehr [Infos](https://datengui.de/){target="_blank"})
- `DWD`-Package: Daten des **Deutschen Wetter Dienstes** (zur [Doku](https://github.com/CorrelAid/datenguideR){target="_blank"}//mehr [Infos](https://www.dwd.de/DE/Home/home_node.html){target="_blank"})
- `eurostat`-Package: Open Data von **Eurostat** (zur [Doku](https://cran.r-project.org/web/packages/eurostat/index.html){target="_blank"}//mehr [Infos](https://ec.europa.eu/eurostat/de/home){target="_blank"})
- `GermaParl`-Package: Plenarprotokolle des **Bundestags** (zur [Doku](https://cran.r-project.org/web/packages/gesisdata/index.html){target="_blank"}//mehr [Infos](https://www.gesis.org/home){target="_blank"})
- `gesisdata`-Package: Daten des **Leibniz-Instituts** (zur [Doku](https://cran.r-project.org/web/packages/gesisdata/index.html){target="_blank"}//mehr [Infos](https://www.gesis.org/home){target="_blank"})
- `googleAnalyticsR`-Package: Daten von **Google Analytics** (zur [Doku](https://cran.r-project.org/web/packages/googleAnalyticsR/index.html){target="_blank"}//mehr [Infos](https://analytics.google.com/analytics/web/provision/#/provision){target="_blank"})
- `gtrendsR`-Package: **Google Trends** Daten (zur [Doku](https://cran.r-project.org/web/packages/gtrendsR/gtrendsR.pdf){target="_blank"}//mehr [Infos](https://trends.google.com/trends/?geo=FR){target="_blank"})
- `nasadata`-Package: Daten von **NASA** (zur [Doku](https://cran.r-project.org/web/packages/nasadata/index.html){target="_blank"}//mehr [Infos](https://data.nasa.gov/){target="_blank"})
- `pangaear`-Package: Daten zu Erde und **Umwelt** (zur [Doku](https://cran.r-project.org/web/packages/pangaear/pangaear.pdf){target="_blank"}//mehr [Infos](https://www.pangaea.de/){target="_blank"})
- `rtweet`-Package: **Twitter**-Daten (zur [Doku](https://cran.r-project.org/web/packages/rtweet/rtweet.pdf){target="_blank"}//mehr [Infos](https://www.twitter.com/){target="_blank"})
- `salesforcer`-Package: Interaktion mit Daten in Salesforce (zur [Doku](https://cran.r-project.org/web/packages/salesforcer/index.html){target="_blank"})
- `dieZeit`-Package: Online-Veröffentlichungen der **Zeit** (zur [Doku](https://cran.r-project.org/web/packages/diezeit/index.html){target="_blank"}//mehr [Infos](https://www.zeit.de/){target="_blank"})
- uvm...
Schaut Euch gerne um - entweder über eine Suchmaschinenrecherche dazu, ob Eure Lieblingsdatenquelle ein zugehöriges R-Package hat, oder auf dieser Liste aller R-Packages, die über [CRAN](https://cran.r-project.org/web/packages/available_packages_by_name.html){target="_blank"} (Comprehensive R Archive Network, zu dt. Umfassendes R-Archivnetzwerk), die zentrale Stelle für geprüfte Package-Distribution, installiert werden können. <br>
*Hinweis: Manche Packages wurden (noch) nicht in die Liste der von RStudio geprüften CRAN-Packages aufgenommen. Ihre Installation erfolgt zumeist über den Befehl `remotes::install_github("Link zum Github-Repository")`.*
### **Und jetzt Ihr**
Gerne könnt Ihr nun versuchen, **eigene Datensätze** in R zu importieren. Ansonsten (oder zusätzlich) gibt es die folgenden Aufgaben und das zugehörige **RMD 05_datenimport-uebung.Rmd** (im [Übungsordner](https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/CorrelAid/lernplattform/tree/main/uebungen){target="_blank"} unter 05_datenimport):
1. Versucht, den "Plastics"-Datensatz (im Ordner `daten/plastics.csv` im [Übungsordner](https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/CorrelAid/lernplattform/tree/main/uebungen){target="_blank"}) mit diesem Code **lokal zu laden**.
2. Ladet den "Plastics"-Datensatz über einen [**Hyperlink**](https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-01-26/plastics.csv){target="_blank"}.
3. Ladet über das **`wb`-Package** den Indikator "Mammal species, threatened" (EN.MAM.THRD.NO) für das Jahr 2018 herunter.
4. In den **SDG-Datensätzen der UN** findet sich ein weiterer spannender Indikator: Municipal waste recycled (Tonnes) mit dem Seriescode "EN_MWT_RCYV". Auch die UN verfügt über eine API. Wie könntet Ihr diesen Datensatz ziehen? Setzt Eure Idee um.
### **Zusätzliche Ressourcen**
- [Cheat Sheet: Data import](https://github.com/CorrelAid/lernplattform/blob/main/cheatsheets/05_cheatsheet-import.pdf){target="_blank"} (engl.)
- [APIs in R](https://app.dataquest.io/course/apis-in-r){target="_blank"} auf DataQuest (engl.)
- [SQL Fundamentals](https://app.dataquest.io/course/sql-fundamentals){target="_blank"} und [Intermediate SQL in R](https://app.dataquest.io/course/sql-intermediate-r){target="_blank"} auf DataQuest (engl.)
- [Web Scraping in R](https://app.dataquest.io/course/scraping-in-r){target="_blank"} auf DataQuest (engl.)