class: center, middle, inverse, title-slide # Einführung in die Quantitative Datenanalyse ## Sitzung 6: Datenquellen und Datenmanipulation ### Proseminar an der Freien Universität Berlin ### 12.06.2017 - Marcus Spittler --- # <span class="red">Inhalt der 6. Sitzung</span> - <span class="red">**Grundlagen**</span> - Pfadangaben - R Projekte - Dateiformate - <span class="blue">**Datenquellen**</span> - Woher sind Daten zu beziehen? - Codebücher und Methodenreports - <span class="green">**Datenmanipulation**</span> - `mutate`-Befehl - `ifelse`-Befehl - Wie mit Faktoren umgehen --- ## <span class="red">Pfadangaben</span> <img src="./img/6filesystem.gif" alt="File system" style=""> --- ## <span class="red">Pfadangaben</span> - **R** verfügt über eine Reihe Funktionen mit denen wir Dateien importieren oder exportieren können. Dazu nutzen wir **Pfadangaben** zu Verzeichnissen und Ordnern - Pfadangaben können entweder + **absolut** sein, wie z.B.: ```C://Users/meinName/RProjekt/daten/``` + **relativ** sein, wie z.B.: ```./RProjekt/daten/``` - Unter Windows wird normalerweise ein *back slash* `\` als Verzeichnisstrenner verwendet, in **R** kommt wie in MacOS or Linux der *forward slash* `/` zum Einsatz. --- ## <span class="red">Pfadangaben</span> - Der aktuelle Arbeitspfad von **R** lässt sich mit `getwd()` (steht für *get working directory*) anzeigen. ```r getwd() ``` ``` ## [1] "C:/Users/spittler/GitProjects/CourseDataAnalysis" ``` - Mit `setwd("C://Order/NochEinOrdner/")` kann der Arbeitspfad geändert werden. - Innerhalb des Arbeitspfads können Dateien mit *relativen Pfadangaben* aufgerufen werden ```r daten <- read_csv("./OrdnermitDateien/dateiname.csv") ``` --- ## <span class="red">R Projekte</span> - *R Projekte* bestehen aus einem Ordner und einer Projektdatei **".Rproj"** - Mit Projekten können wir in einer abgeschlossenen Entwicklungsumgebung arbeiten - Pfadangaben können wir immer *relativ* zum Ordnerpfad des Projektes angeben <iframe width="560" height="315" src="https://www.youtube.com/embed/pyJMWlDptYw" frameborder="0" allowfullscreen></iframe> --- ## <span class="red">Dateiformate</span> - **Dateien** bestehen aus einem **Dateinamen** und haben ein **Dateiformat**. Das Format wird über die **Dateiendung** angegeben (z.B. **".mp3, .docx, .pdf"**). - Die Kenntnis des Dateiformats ist essentiell für die Interpretation der in einer Datei abgelegten Information. Betriebssysteme ordnen Dateien über das Dateiformat Anwendungen zu, die die Dateien interpretieren können. --- ## <span class="red">Dateiformate in der Datenanalyse</span> |Format | Beschreibung | R-Befehl | Paket | |:--------|:--------------------------|:--------------------------|-----------| |.RData | R Datendatei | `load("daten.RData")` | - | |.csv | Comma seperated values | `read_csv("daten.csv")` | `foreign` | | | Deutsche **csv's** | `read_csv2("daten.csv")` | `foreign` | |.xls/x | Excel Dateien | `read_excel("daten.xlsx")`| `readxl` | |.dta | STATA Dateien | `read_dta("daten.dta")` | `haven` | |.sav | SPSS Dateien | `read_sav("daten.sav")` | `haven` | |.sas/7 | SAS Dateien | `read_sas("daten.sas7")` | `haven` | - Deutsche **csv's** werden mit Semikolon getrennt und müssen anders geöffnet werden. - Daten können auch bequem über das GUI von RStudio eingelesen werden --- ## <span class="red">Datenquellen</span> - [Quality of Government](http://qog.pol.gu.se/data/datadownloads/qogstandarddata) - Aggregatdatensatz auf Land/Jahr-Basis der eine Vielzahl kleinerer Datensätze vereint - [GESIS](http://www.gesis.org/angebot/daten-analysieren/umfragedaten/) bzw. [https://dbk.gesis.org/dbksearch/](https://dbk.gesis.org/dbksearch/) - Das Archiv der Leibniz-Gemeinschaft, sehr gut für u.a. Bevölkerungsbefragungen - z.B.: ALLBUS, Eurobarometer, EVS, ISSP, GLES, Politbarometer - **Statistisches Bundesamt** und Landesämter [z.B. Berlin](https://daten.berlin.de/) - [World Value Survey](http://www.worldvaluessurvey.org/WVSContents.jsp) - Weltweit vergleichende Studie zu Werten und Einstellungen, Demokratiezufriedenheit etc. --- ## <span class="red">Datenquellen</span> - [V-Dem: Global Standards, Local Knowledge](https://www.v-dem.net/en/) - Expertendatensatz mit Demokratieindizes - [Eurostat](http://ec.europa.eu/eurostat/data/database) - Vor allem ökonomische Daten zur EU-Staaten - Auch Zugriff über ein [R-Paket](https://cran.r-project.org/web/packages/eurostat/index.html) möglich - [TwitteR](http://geoffjentry.hexdump.org/twitteR.pdf) - Möglichkeit Tweets direkt mit R aus Twitter auszulesen und zu analysieren. Die Analyse erfolgt z.B. mit dem Paket [quanteda](https://cran.r-project.org/web/packages/quanteda/vignettes/quickstart.html) --- ## <span class="blue">Weitere wichtige Dokumente</span> - Fragebogen - Codebücher - Methodenreport --- ## <span class="green">Datenmanipulation</span> Dem Fragenbogen haben wir entnommen, dass die Antwort auf die Frage nach Geschlecht der Befragten in der Variable **`d10`** gespeichert ist. Unser Datensatz hat den Namen **`E`**. Das `$`-Zeichen trennt Datensatz und Datenspalte. Mit `table()` lassen wir uns die abs. Häufigkeit anzeigen. `str()` gibt uns Informationen zum Datentyp. ```r table(E$d10) ``` ``` ## ## 1 2 ## 814 834 ``` ```r str(E$d10) ``` ``` ## Class 'labelled' atomic [1:1648] 1 1 1 1 1 1 2 1 1 1 ... ## ..- attr(*, "label")= chr "D10 Gender." ## ..- attr(*, "format.stata")= chr "%8.0g" ## ..- attr(*, "labels")= Named num [1:2] 1 2 ## .. ..- attr(*, "names")= chr [1:2] "Male" "Female" ``` --- ## <span class="green">Datenmanipulation</span> Da wir den Datensatz mit dem `haven`-Paket geladen haben (empfohlen!), können wir die numerischen Werte von Geschlecht wieder in einen Faktor umwandeln. Dies geht mit `as_factor()`. Wie immer gibt es mehr als eine Möglichkeit dies zu tun: ```r E$gender <- as_factor(E$d10) table(E$gender) ``` ``` ## ## Male Female ## 814 834 ``` Alternative: ```r E <- E %>% mutate( gender = as_factor(d10) ) ``` --- ## <span class="green">Datenmanipulation</span> Mit `head()` können die ersten sechs Zeilen des Datensatzes ausgegeben werden. ```r E <- E %>% mutate( gender = as_factor(d10) ) head(E) ``` ``` ## # A tibble: 6 x 3 ## d10 qpp8_2 gender ## <dbl+lbl> <dbl+lbl> <fctr> ## 1 1 11 Male ## 2 1 10 Male ## 3 1 3 Male ## 4 1 5 Male ## 5 1 9 Male ## 6 1 4 Male ``` --- In der Variable `qpp8_2` ist die **Wahlwahrscheinlichkeit der SPD** gespeichert. Wieder nutzen wir `table()` für einen Überblick. Mit `hist()` erstellen wir ein sehr einfaches Histogramm. ```r table(E$qpp8_2) ``` ``` ## ## -99 -9 -8 1 2 3 4 5 6 7 8 9 10 11 ## 11 33 52 281 45 83 112 121 226 102 117 141 81 243 ``` ```r hist(E$qpp8_2) ``` ![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfgAAAFoCAMAAACMkBkOAAAAjVBMVEUAAAAAADoAAGYAOjoAOpAAZmYAZpAAZrY6AAA6ADo6AGY6OmY6OpA6kJA6kNtmAABmADpmAGZmOgBmOpBmZjpmtrZmtttmtv+QOgCQOjqQZgCQZpCQkDqQtpCQ29uQ2/+2ZgC2kDq2tma2/7a2///bkDrb25Db/7bb/9vb////tmb/25D//7b//9v///+t/6lzAAAACXBIWXMAAAsSAAALEgHS3X78AAALHUlEQVR4nO2dbWOjxhVGsdeNnHSDdpO08nbbSElNN0YS///nlRkGybaQveJl5ornnA9B9nJhosOdFzwDWQWSZKkLAGlAvCiIFwXxoiBeFMSLgnhREC8K4kVBvCiIFwXxoiBeFMSLgnhREC8K4kVBvCiIFwXxoiBeFMSLgnhREC8K4t+lyFOXYAquV/xueftYVfuH28fmU8tmNeCg2/vsZu0Pnjnqz+7T3dM7Jcmy5yWoNq9+tsgcxL/49SYbIr6NPohvPizeLojb5dnFsXE/Wzc/B/H+U52r9Ze9f2g0FfUmr9w/Z7f/Xd497R9ufqs1lk0Wl9kP9e8f653ai6TZ30d7g7tlEFlmd3/87I7v/u1nf6TbP73Ww4ft/d3TbukrilCwm3W995DrLwJzER/S7q9GvM+5eutNfrh3uty/fgu5WWYtIS/D/h3ia6t/5MddwpFefGjEHzPc/VxtjheCTa5ZfOvOfev+23a4ynp77xvnm/X2vvZRNJYWbdjtY5m5gGzV5ulh/9dVvTPY1B1+l7I5Uu7+eXX44KuLVwlevtcvSM5cxPufXNY5daW3XGQr/2HXVPXrNsiJX/gLoP3tYf8O8b7WcJXE4UjuLEWWHz40lUH+vGxlZj3hr1r8SRufhZw9J97vcxB/vBy6xB8ztshfHum1+NK3Kc9NF/a9z0e8YxPUdVX1ToVLT/er1+K7qvpD527hxftdis6qvhH/rK4vzHfpq/mIb5PZ1budnTunuMy6M/6w/+uq3nUDnrX13Z27Zpej6xBLr34iOqr6UJ3XmtrhXC2hHc45xbW9tt5+If6w/4n4ww0c5/kfh+Fc/ZvDh9c3cMoM8SYY2sM+3rI9tvFVx62j62Le4kPi5qMdDvFXQvnuDddLeFN808vIrqBD75m5eDgH4kVBvCiIFwXxoiBeFMSLgnhREC8K4kVBvCiIFwXxoiBeFMSLgnhREC8K4kVBvCiIFwXxoiBeFMSLgnhREC8K4kVBvCiIFwXxZsjeY9yzjXo0GMB7KhA/UxAvCuJFsSY+POnhqp/7cRUYE79/aB7fVFp/RufVY0z87vPjiy1MhTHxZHwsjIlvHxlGGz811sRDJBAvijXxDOciYUw8nbtYGBPPcC4WxsST8bEwJp7hXCysiYdI2Bc/zZQQeayJD69b7ejcIX5UjIl3nbv9Q474yTEmvhG+WSB+aoyJD8O54sNPiJ8WY+Lr4VzuNsXpeA7xo2JN/DSxcALiRUG8KIgXxZj49i2rHTfrET8qxsT7uzcxSiKPNfHV7tOZl2YiflTMiZ8kFk5AvCiIFwXxoiBeFMSLgnhREC8K4kVBvCiIFwXxoiBeFMSLgnhREC8K4kVBvCiIF8W+eNbHT4J98WPEwgmIFwXxoiBeFMSLgnhREC8K4kVBvCiIFwXxoiBeFMSLgnhREC8K4kVBvCiIFwXxoiBeFMSLgnhRrIk//1JhxI+KMfFvvGIU8aNiTPwbLxVG/KgYE0/GxyKF+N1ycXaP8y8VRvyopMn4MvMvEu0VC6OQrKrfP2TZqmcsDCeN+ObVwR09OIZzsUjTxp923QJ07mJhrFffMZxjffwkJBFf1q170dm7I+NjkaSq9y+a2p6+MLpiOBeNFOKbtO5I6oglkSdJVe/TuiOpI5ZEHmOdOzecWxRU9dNjTPz+y7oqFrX/j3TupiVRr/5MB84P44qcv85NT5obOGfv1ZLxsUgivuNWbUvdxue08RFIUtVv8v6xMA5pqvqzbXy0kshjrFc/USycgHhRkojfP2R33z5dOAUH8aOS5l59Xg/XuFeflETDuVr8W4O66UsiT7qML8j4lKRq47PsQu+IHxd69aIgXhTu3ImSLuPdX1/7xsJg0onvHs6xoCIS6cSXXVU906tjkbCN75qNwfr4WBjr1ZPxsTAmngUVsUhY1V84oEP8qCTJeDedsvnP5bEwDukmWzKcS0qiv85VZzKezl0s0v11rrOmZ318LIz16sn4WBgTz3AuFky2FIXJlqJYm2y5vV+5rl/HRYH4UTE22dJ17jYrVstOj7HJlnU14FZK89e5ybHWq6/Tvczr4dzpKB/xo2JtfXy18cO5jrs7iB+VJG38l0ufXD1+SeRhlq0o1tr4aWLhBMSLEl/8patkpymJPGnEd9yf+a5YGA3Ei4J4URKI7zXHFvEjQ69eFMSLgnhREC+KNfEsqIiEMfFMr46FMfGsj4+FMfFkfCyMiWdBRSysiZ8mFk5AvCjWxDOci4Qx8XTuYmFMPOvjY2FMPBkfC2PiGc7Fwpr4aWLhBMSLYlL89qeOWVmIHxVj4t+YkIf4UTEmvjZfKyfjp8eaeKf+7n+Inxx74t1t266Z14gfFYvix4+FExAvCuJFQbwoiBcF8aIgXhTEi4J4URAvCuJFQbwoiBfFmngWVETCmHimV8fCmHjWx8fCmHgyPhbvin+PUc/GgopoDM34scVPEwsnIF4Ua+IZzkXCmHg6d7EwJp718bEwJp6Mj4Ux8QznYmFN/DSxcALiRbEmvh7O3fA26QgYE+86d/uHHPGTY0x8I3yzQPzUGBMfhnPFh9MV8ogfFWPi6+Fc7jYFj0KZGGvip4mFExAvCuJFQbwoiBcF8aIgXhTEi4J4URA/U4YuiED8lTK1WMQbBfGiIF4UxIuCeFEQLwriRUG8KIgXBfGiXJv4734wwrgP55kfVyb++5dJj1uw+XFl4r//wQjvZjxMy7ji38h4uGLev0zOPxgBrhj1hlcWxIuCeFEQLwriRRlRfOJRLCQTT/wVxSNeNB7xovGIF41HvGg84kXjES8azw0cURAvCuJFQbwoiBcF8aIgXhTEi4J4URAvyijit+61Jbtl5tZchM2lR7j3E/f7BVdu2Ufzqqy+8WHhSO94t8BwSPyQkvc7+xjiSyfNfXHFot1cyO7TuirunvoFOzYrt9Snf3xVFdmqZ+GrpvzbH9f9zz+k5P3OPoL4zc1/6ox3a+vqzA+bCw+x/fjkDtAvuDos7OsdX5fg77+s+seX7vverPqff0DJe559tKreu/u0DpsLDxAyvl+wK8DHf7mqvnd8tf/ye50v/eOrqv//vGPQmXudfTTxblFlfdqwufQITfPUM9g1ct5a7/iqyF1F2T++8i9l7B8/5Mz9zj5M/CbLXDUzKOPdMeoWqipvH3td9z5+QHUT4vd9M775DvxL2pJlfI+zj5bxg9r4cLH2b+N/HRZf+Hnpef+W1lU5Q1rqQW18r7OPJt5VNr5Xn/fonoaM7xfs2Ph07R9/fIdur/jmm+8fPyCy79mNjOPLbNg4vA4cdB9g4Di+qTFWicbxvc7OnTtREC8K4kVBvCiIFwXxoiBeFMSLgnhREC8K4kVBvCiIFwXxoiBeFMSLgnhREC8K4kVBvCha4puXJ96s3eTObHV+p2dvXgoLEmeHmPgw7Xz74+9fv33unoIelnM9+8lN/p4douI//vXVqd0tsx++rHef/+1qgbAJCzhDRFiQmKrA06Epfrf8pxPvlyDcrHfLu6fy9rHdvMh4v/eQ1YxWERPv23hndZNluU9st/Jquar2X9rNyboEd3nMDzHxh6Vl+6/flitXqzvjLqM3q7AJy7kOMX5B4vzQFF8u9l+fNnmb8bXx4L/evFptHBamzQ5N8btPda++lrsJbfzCrdcNm5cZP1fvauLvw/rC4+OC/uYy/jffq2827QLOhnZB4uzQEn9k/zX030JVX820834WVfEHzogPdcPNbK8FefGqIF4UxIuCeFEQLwriRUG8KIgXBfGiIF4UxIuCeFEQLwriRUG8KIgX5f9v8Bf+xMQ7jwAAAABJRU5ErkJggg==)<!-- --> --- ## <span class="green">ifelse()</span> Der Datendokumentation entnehmen wir, dass negative Werte **fehlende Werte/Missings** repräsentieren. Diese müssen wir von der Analyse ausschließen. Dazu nutzen wir den `ifelse()`-Befehl. `ifelse()` funktioniert nach folgendem Schema: ```r ifelse( BEDINGUNG, falls WAHR, falls FALSCH ) ``` - Eine Bedingung ist etwa: - `x < 2` = Variable ist kleiner 2 - `x == 1` = Variable ist gleich 1 - `x != 5` = Variable ist ungleich 5 - `is.na(x)`= Variable ist fehlend - `x %in% c("Deutschland", "Schweiz")` = Variable ist ein Text mit dem Inhalt Deutschland oder Schweiz --- ## <span class="green">ifelse()</span> ```r E <- E %>% mutate( ptv.spd = ifelse(qpp8_2 < 0, NA, qpp8_2) ) set.seed(50);sample_n(E,6) ``` ``` ## # A tibble: 6 x 4 ## d10 qpp8_2 gender ptv.spd ## <dbl+lbl> <dbl+lbl> <fctr> <dbl> ## 1 2 4 Female 4 ## 2 1 -8 Male NA ## 3 1 7 Male 7 ## 4 2 5 Female 5 ## 5 2 4 Female 4 ## 6 1 1 Male 1 ``` --- ## European Parliament Election Study 2014 - Voter Study, First Post-Election Survey - Grundgesamtheit: Wohnbevölkerung ab 18 Jahren der jeweiligen 28 EU-Mitgliedsstaaten, die die Staatsbürgerschaft besitzen oder Staatsbürger eines anderen EU-Mitgliedsstaates sind (Österreich: ab 16 Jahren).Befragte mussten ausreichende Sprachkenntnisse besitzen, um die Fragen in einer der jeweiligen Landessprachen zu beantworten. - [https://dbk.gesis.org/dbksearch/SDesc2.asp?DB=D&no=5160](https://dbk.gesis.org/dbksearch/SDesc2.asp?DB=D&no=5160) - Download für den Kurs: [https://www.dropbox.com/sh/qkoniyemrsbscz4/AAABHBT2jjedhYamFhBaLUzBa?dl=0](https://www.dropbox.com/sh/qkoniyemrsbscz4/AAABHBT2jjedhYamFhBaLUzBa?dl=0) --- class: middle, center ## Vielen Dank für die Aufmerksamkeit <iframe src="https://giphy.com/embed/26gJyUJoIFC2tElKU" width="480" height="268" frameBorder="0" class="giphy-embed" allowFullScreen></iframe>