{"id":1732,"date":"2023-04-12T13:36:05","date_gmt":"2023-04-12T11:36:05","guid":{"rendered":"http:\/\/statistikgrundlagen.de\/ebook\/?post_type=chapter&#038;p=1732"},"modified":"2025-11-07T10:47:51","modified_gmt":"2025-11-07T09:47:51","slug":"datenmanagement-mit-r","status":"publish","type":"chapter","link":"https:\/\/statistikgrundlagen.de\/ebook\/chapter\/datenmanagement-mit-r\/","title":{"rendered":"Datenmanagement mit R"},"content":{"raw":"<h1>Datenmanagement<\/h1>\r\nR ist ein leistungsstarkes Werkzeug f\u00fcr die Datenverwaltung und Datenbereinigung. R verf\u00fcgt \u00fcber zahlreiche Funktionen und Pakete zum Importieren, Exportieren und Manipulieren von Daten und kann mit einer Vielzahl von Dateitypen und Datenformaten umgehen.\r\n\r\nEin Vorteil von R f\u00fcr die Datenverwaltung besteht darin, dass Sie Code schreiben k\u00f6nnen, um Datenbearbeitungsaufgaben zu automatisieren, was effizienter sein kann als die Verwendung von Point-and-Click-Programmen wie SPSS. So k\u00f6nnen Sie beispielsweise Code schreiben, um Aufgaben wie das Umbenennen von Variablen, das Umkodieren von Werten und das Zusammenf\u00fchren von Datens\u00e4tzen durchzuf\u00fchren. Dies kann besonders n\u00fctzlich sein, um gro\u00dfe und komplexe Datens\u00e4tze zu bearbeiten oder um sich wiederholende Aufgaben auszuf\u00fchren.\r\n\r\nR verf\u00fcgt auch \u00fcber eine Reihe von Paketen zur Datenbereinigung, wie z. B. tidyverse, das eine Reihe von Tools zur Datenmanipulation und -visualisierung bereitstellt. Diese Pakete erleichtern die Identifizierung und Korrektur von Fehlern in den Daten sowie die Neuformatierung und Umgestaltung der Daten nach Bedarf.\r\n\r\nIm Vergleich dazu verf\u00fcgen SPSS und Excel ebenfalls \u00fcber Funktionen f\u00fcr die Datenverwaltung und -bereinigung, z. B. Sortier- und Filterwerkzeuge, Pivot-Tabellen und Funktionen zur Datenmanipulation. Allerdings sind diese Tools weniger flexibel und leistungsf\u00e4hig als die in R verf\u00fcgbaren, insbesondere bei der Handhabung gro\u00dfer und komplexer Datens\u00e4tze oder bei der Automatisierung von Aufgaben.\r\n\r\nInsgesamt ist R eine gute Wahl f\u00fcr das Datenmanagement und die Datenbereinigung, insbesondere f\u00fcr Benutzer, die bereit sind, sich mit der Programmierung vertraut zu machen und komplexe oder sich wiederholende Aufgaben durchf\u00fchren m\u00fcssen. Software wie SPSS und Excel sind jedoch m\u00f6glicherweise f\u00fcr Nutzer, die mit diesen Programmen vertraut sind, der schnellere Weg, um mit kleineren oder einfacheren Datens\u00e4tzen arbeiten.\r\n<div id=\"einf\u00fchrung-syntax-umgang-mit-daten-und-datens\u00e4tzen\" class=\"section level2 hasAnchor\">\r\n<h1>Einf\u00fchrung: Syntax, Umgang mit Daten und Datens\u00e4tzen<\/h1>\r\nDen R Syntax (also die Programmiersprache) zu erlernen, ist die gr\u00f6\u00dfte Herausforderung im Umgang mit R. Wie schwer es Ihnen f\u00e4llt, den Syntax zu lernen, h\u00e4ngt von Ihrer bisherigen Programmiererfahrung und Ihren Zielen ab. Der beste Weg, die R Syntax zu lernen, besteht darin, das Schreiben und Ausf\u00fchren von Code zu \u00fcben. Wir werden mit einfachen Skripten beginnen und uns dann schrittweise an komplexere Aufgaben herantasten. Bald wird es Ihnen ganz nat\u00fcrlich vorkommen, R Syntax zu schreiben. Los geht es mit ein paar Basics:\r\n<ul>\r\n \t<li>R unterscheidet zwischen Gro\u00df- und Kleinschreibung, was bedeutet, dass x und X als unterschiedliche Variablen behandelt werden.<\/li>\r\n \t<li>R verwendet #, um den Beginn eines Kommentars anzuzeigen. Alles, was nach # in derselben Zeile steht, wird vom Programm ignoriert.<\/li>\r\n \t<li>R verwendet &lt;- oder =, um Variablen Werte zuzuweisen. Zum Beispiel weisen x &lt;- 5 und x = 5 der Variablen x den Wert 5 zu.<\/li>\r\n \t<li>R verwendet (), um Funktionsargumente anzugeben. Zum Beispiel berechnet mean(x) den Mittelwert der Werte in x.<\/li>\r\n \t<li>R verwendet [ ], um Elemente eines Vektors oder einer Matrix zu indizieren. Zum Beispiel ruft x[1] das erste Element von x ab.<\/li>\r\n \t<li>R verwendet [, ], um Elemente einer Matrix zu indizieren. Zum Beispiel ruft x[1, 2] das Element in der ersten Zeile und zweiten Spalte von x ab. Dazu gleich mehr.<\/li>\r\n<\/ul>\r\nStarten wir einfach mit einem Beispiel: \u2018x &lt;- 3 + 4\u2019 speichert das Ergebnis des Terms \u20183+4\u2019 in das Objekt x. Um das Ergebnis zu sehen, muss x angezeigt werden:\r\n<div id=\"cb1\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb1-1\">x <span class=\"ot\">&lt;-<\/span> <span class=\"dv\">3<\/span> <span class=\"sc\">+<\/span> <span class=\"dv\">4<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nHinweis: Objekte in R k\u00f6nnen Variablen, Datens\u00e4tze (sog. dataframes) oder Funktionen sein. Dazu sp\u00e4ter mehr. In Ihrem Environment (rechts oben in RStudio) sollte jetzt das Objekt \u201cx\u201d zu sehen sein. Um in der Konsole zu pr\u00fcfen, was im Speicher ist, k\u00f6nnen Sie Folgendes eingeben:\r\n<div id=\"cb2\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb2-1\"><span class=\"fu\">ls<\/span>()<\/span><\/code><\/pre>\r\n<\/div>\r\nNun l\u00f6schen wir das Objekt x wieder:\r\n<div id=\"cb3\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb3-1\"><span class=\"fu\">rm<\/span>(x)<\/span><\/code><\/pre>\r\n<\/div>\r\nIn R arbeitet man in der Regel in einem Verzeichnis pro Projekt. Das Verzeichnis w\u00e4hlt man, indem man in RStudio im Fenster unten rechts (\u201cFiles\u201d-Tab) in das gew\u00fcnschte Verzeichnis navigiert und dort unter \u201cMore\u201d \u201cSet As Working Directory\u201d ausw\u00e4hlt. Sie k\u00f6nnen dieses auch mit dem Befehl <em>setwd()<\/em> festlegen z. B. <em>setwd(\u201cC:\/Working Directory\u201d))<\/em>\r\n\r\nSo pr\u00fcfen Sie das aktuelle Arbeitsverzeichnis in R:\r\n<div id=\"cb4\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb4-1\"><span class=\"fu\">getwd<\/span>()<\/span><\/code><\/pre>\r\n<\/div>\r\nHilfe erhalten:\r\n- das Hilfesystem von R ist in RStudio unten rechts mit dem \u201cHelp\u201d-Tab erreichbar\r\n* Hilfe zu einem Stichwort gibt es mit ?? \u201cStichwort\u201d z. B.: ?? \u201cmean\u201d\r\n* Hilfe zu einem bekannten Befehl gibt es mit ?befehl(), z. B.:\r\n<div id=\"cb5\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb5-1\">?<span class=\"fu\">mean<\/span>()<\/span><\/code><\/pre>\r\n<\/div>\r\nSchnelle Antworten gibt es auf Google - Da \u201cR\u201d jedoch schwer zu googlen ist, gibt es spezielle Suchmaschinen wie auf www.rseek.org, die nur R bezogene Ergebnisse liefern.\r\n\r\n<\/div>\r\n<div id=\"dateien-speichern-und-laden\" class=\"section level2 hasAnchor\">\r\n<h1>Dateien speichern und laden<\/h1>\r\nWenn man \u201cFile -&gt; Save As\u2026\u201d ausw\u00e4hlt, speichert man das aktuelle Skript (die aktuelle Syntax) als Textdatei mit der Endung .R.\r\n\r\nWenn man \u201cSession -&gt; Save Workspace As\u2026\u201d ausw\u00e4hlt, wird der Inhalt des Workspace gespeichert.\r\n\r\nEntsprechend l\u00e4dt man den Workspace mit \u201cSession -&gt; Load Workspace\u201d\r\n\r\nEs lassen sich auch \u201cProjekte\u201d speichern, diese beinhalten alle Dateien (Skripte, Daten etc.) wie auch Einstellungen und sollten in einem getrennten Ordner angelegt werden.\r\n\r\n<\/div>\r\n<div id=\"umgang-mit-variablen\" class=\"section level2 hasAnchor\">\r\n<h1>Umgang mit Variablen<\/h1>\r\nWir werden zun\u00e4chst eine einfache Variable erzeugen: Eine Zahlenfolge. Zahlenfolgen lassen sich auf unterschiedliche Weise erzeugen, z. B. mit der seq() Funktion und dem \u201c:\u201d - Befehl. So erzeuges Sie zum Beispiel die Zahlen 1 bis 15:\r\n<div id=\"cb6\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb6-1\">ID  <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">seq<\/span> (<span class=\"dv\">1<\/span><span class=\"sc\">:<\/span><span class=\"dv\">15<\/span>)               <\/span>\r\n<span id=\"cb6-2\">ID<\/span>\r\n<span id=\"cb6-3\"><span class=\"do\">##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nAlternativ k\u00f6nnen Sie dies auch durch Angabe des Start- und Endpunkts, durch Komma getrennt, eingeben. Zus\u00e4tzlich k\u00f6nnen Sie durch <em>by<\/em> die Schritte definieren:\r\n<div id=\"cb7\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb7-1\">ID2 <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">seq<\/span>(<span class=\"dv\">13<\/span>, <span class=\"sc\">-<\/span><span class=\"dv\">1<\/span>, <span class=\"at\">by =<\/span> <span class=\"sc\">-<\/span><span class=\"dv\">1<\/span>)<\/span>\r\n<span id=\"cb7-2\">ID2<\/span>\r\n<span id=\"cb7-3\"><span class=\"do\">##  [1] 13 12 11 10  9  8  7  6  5  4  3  2  1  0 -1<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nWenn Sie keine aufeinanderfolgenden Zahlen in der Variable anlegen wollen, dann k\u00f6nnen Sie beliebige Werte mit dem <em>c()<\/em> Befehl (f\u00fcr \u201cCombine\u201d - f\u00fcr Kombine) zusammenf\u00fcgen:\r\n<div id=\"cb8\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb8-1\">Test <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">c<\/span>(<span class=\"dv\">1<\/span>,<span class=\"dv\">3<\/span>,<span class=\"dv\">5<\/span>,<span class=\"dv\">7<\/span><span class=\"sc\">:<\/span><span class=\"dv\">10<\/span>)<\/span>\r\n<span id=\"cb8-2\">Test<\/span>\r\n<span id=\"cb8-3\"><span class=\"do\">## [1]  1  3  5  7  8  9 10<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nEine weitere Variante ist der <em>rep()<\/em> Befehl (f\u00fcr Repeat - Wiederholen) - Dies kann man nat\u00fcrlich auch kombinieren:\r\n<div id=\"cb9\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb9-1\">GruppenNr <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">c<\/span>(<span class=\"fu\">rep<\/span>(<span class=\"dv\">1<\/span>, <span class=\"at\">times =<\/span> <span class=\"dv\">3<\/span>), <span class=\"fu\">rep<\/span>(<span class=\"dv\">2<\/span>, <span class=\"at\">times =<\/span> <span class=\"dv\">3<\/span>), <span class=\"fu\">rep<\/span>(<span class=\"dv\">3<\/span>, <span class=\"at\">times =<\/span> <span class=\"dv\">3<\/span>), <\/span>\r\n<span id=\"cb9-2\">               <span class=\"fu\">rep<\/span>(<span class=\"dv\">4<\/span>, <span class=\"at\">times =<\/span> <span class=\"dv\">3<\/span>), <span class=\"fu\">rep<\/span>(<span class=\"dv\">5<\/span>, <span class=\"at\">times =<\/span> <span class=\"dv\">3<\/span>))<\/span>\r\n<span id=\"cb9-3\">GruppenNr<\/span>\r\n<span id=\"cb9-4\"><span class=\"do\">##  [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nIn diesem Video zeige ich, wie das in R funktioniert:\r\n<div class=\"vembedr\" align=\"center\">\r\n<div><iframe src=\"https:\/\/www.youtube.com\/embed\/MImRbiRey2M\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\r\n<\/div>\r\n<\/div>\r\n<div id=\"\u00fcbung\" class=\"section level2 hasAnchor\">\r\n<h1>\u00dcbung<\/h1>\r\n<ul>\r\n \t<li>Erzeugen Sie eine Variable \u201cV1\u201d mit den Zahlen: 18 bis 3 in 3er Schritten<\/li>\r\n \t<li>Erzeugen Sie eine Variable \u201cV2\u201d mit 10 mal der Zahlenfolge 1,2,3<\/li>\r\n<\/ul>\r\nDie L\u00f6sung zu dieser \u00dcbungsaufgabe gibt es im neuen Buch<a href=\"https:\/\/amzn.to\/3MLBUb8\"> Statistik mit R &amp; RStudio<\/a>.\r\n\r\n<a href=\"https:\/\/amzn.to\/3MLBUb8\"><img class=\"alignnone size-full wp-image-1822\" src=\"http:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz3.png\" alt=\"\" width=\"900\" height=\"577\" \/><\/a>\r\n\r\n<\/div>\r\n<div id=\"variablentypen\" class=\"section level2 hasAnchor\">\r\n<h1>Variablentypen<\/h1>\r\nVariablen k\u00f6nnen einen unterschiedlichen Typen haben. Die Wichtigsten sind:\r\n<ul>\r\n \t<li>Numerische Variablen sind Variablen, die numerische Werte enthalten, wie z. B. Ganzzahlen oder Gleitkommazahlen. Diese Variablen k\u00f6nnen zur Durchf\u00fchrung von Berechnungen und statistischen Analysen verwendet werden.<\/li>\r\n \t<li>Character Variablen sind Variablen, die Zeichenwerte (d.\u00a0h. Text) enthalten. Diese Variablen k\u00f6nnen zum Speichern von Namen, Beschriftungen und anderen Arten von nicht-numerischen Daten verwendet werden.<\/li>\r\n \t<li>Faktoren sind Variablen, die eine begrenzte Anzahl von Werten annehmen k\u00f6nnen, die als Ebenen bezeichnet werden. Faktoren werden verwendet, um kategorische Daten darzustellen, wie z. B. Geschlecht oder Augenfarbe.<\/li>\r\n<\/ul>\r\nViele Analysen brauchen den richtigen Typ, um zu funktionieren. Beispielsweise muss eine Variable, die die Zugeh\u00f6rigkeit zu einer Gruppe numerisch angibt, vom Typ \u201cfactor\u201d sein.\r\n\r\nSchauen wir uns zun\u00e4chst den Variablentyp mit der <em>class()<\/em> Funktion an.\r\n<div id=\"cb10\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb10-1\"><span class=\"fu\">class<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb10-2\"><span class=\"do\">## [1] \"numeric\"<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nDiese Variable sollte eigentlich ein Faktor sein. Nun \u00e4ndern wir auf den korrekten Variablen-Typ:\r\n<div id=\"cb11\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb11-1\">GruppenNr <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">factor<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb11-2\"><span class=\"fu\">class<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb11-3\"><span class=\"do\">## [1] \"factor\"<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nSchauen Sie sich nun auch den Variableninhalt nochmal an:\r\n<div id=\"cb12\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb12-1\">GruppenNr<\/span>\r\n<span id=\"cb12-2\"><span class=\"do\">##  [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5<\/span><\/span>\r\n<span id=\"cb12-3\"><span class=\"do\">## Levels: 1 2 3 4 5<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nWie Sie sehen, werden nun unter den Werten die Faktorstufen (sog. Levels) mit angegeben, also die Auspr\u00e4gungen, die in den Daten vorkommen. Wir k\u00f6nnen den Faktorstufen auch Labels geben (anders als in SPSS werden diese dann auch als Werte angezeigt). Dies geht mit dem zus\u00e4tzlichen Befehl <em>labels<\/em>.\r\n<div id=\"cb13\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb13-1\">GruppenNr <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">factor<\/span>(GruppenNr,             <span class=\"at\">labels=<\/span><span class=\"fu\">c<\/span>(<span class=\"st\">\"Gruppe1\"<\/span>,<span class=\"st\">\"Gruppe2\"<\/span>,<span class=\"st\">\"Gruppe3\"<\/span>,<span class=\"st\">\"Gruppe4\"<\/span>,<span class=\"st\">\"Gruppe5\"<\/span>))<\/span><\/code><\/pre>\r\n<\/div>\r\nSchauen Sie sich nun auch den Variableninhalt nochmal an:\r\n<div id=\"cb14\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb14-1\">GruppenNr<\/span>\r\n<span id=\"cb14-2\"><span class=\"do\">##  [1] Gruppe1 Gruppe1 Gruppe1 Gruppe2 Gruppe2 Gruppe2 Gruppe3 Gruppe3<\/span><\/span>\r\n<span id=\"cb14-3\"><span class=\"do\">##  [9] Gruppe3 Gruppe4 Gruppe4 Gruppe4 Gruppe5 Gruppe5 Gruppe5<\/span><\/span>\r\n<span id=\"cb14-4\"><span class=\"do\">## Levels: Gruppe1 Gruppe2 Gruppe3 Gruppe4 Gruppe5<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nUm die Anzahl der Eintr\u00e4ge einer Variable zu sehen, benutzt man die <em>length()<\/em> Funktion:\r\n<div id=\"cb15\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb15-1\"><span class=\"fu\">length<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb15-2\"><span class=\"do\">## [1] 15<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nDie Faktorstufen eines Faktors erh\u00e4lt man mit levels():\r\n<div id=\"cb16\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb16-1\"><span class=\"fu\">levels<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb16-2\"><span class=\"do\">## [1] \"Gruppe1\" \"Gruppe2\" \"Gruppe3\" \"Gruppe4\" \"Gruppe5\"<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nEine kurze Zusammenfassung einer Variablen mit den wichtigsten deskriptiven Statistiken gibt die <em>summary()<\/em> Funktion, deren Ausgabe sich danach unterscheidet, von welchem Typ die Variable ist:\r\n\r\nMit Faktor wird eine H\u00e4ufigkeitstabelle ausgegeben:\r\n<div id=\"cb17\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb17-1\"><span class=\"fu\">summary<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb17-2\"><span class=\"do\">## Gruppe1 Gruppe2 Gruppe3 Gruppe4 Gruppe5 <\/span><\/span>\r\n<span id=\"cb17-3\"><span class=\"do\">##       3       3       3       3       3<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nMit numerischer Variable wird das Minimum, das erste Quartil, der Median, der Mittelwert, das dritte Quartil und der H\u00f6chstwert f\u00fcr die Variable ausgegeben:\r\n<div id=\"cb18\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb18-1\"><span class=\"fu\">summary<\/span>(ID2)<\/span>\r\n<span id=\"cb18-2\"><span class=\"do\">##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. <\/span><\/span>\r\n<span id=\"cb18-3\"><span class=\"do\">##    -1.0     2.5     6.0     6.0     9.5    13.0<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<div id=\"datens\u00e4tze-dataframes-erzeugen\" class=\"section level2 hasAnchor\">\r\n<h1>Datens\u00e4tze (Dataframes) erzeugen<\/h1>\r\nIn der Programmiersprache R ist ein Dataframe eine Tabelle mit Daten, die in Zeilen und Spalten organisiert ist. Dataframes sind wichtig, weil sie es erm\u00f6glichen, gro\u00dfe Datenmengen strukturiert und \u00fcbersichtlich zu speichern und zu bearbeiten. Sie sind eine grundlegende Datenstruktur in R und werden h\u00e4ufig in der statistischen Analyse, Datenmanipulation und Datenvisualisierung verwendet.\r\n\r\nDataframes haben mehrere Vorteile gegen\u00fcber anderen Datenstrukturen in R, wie z. B. Matrizen und Listen. Zum Beispiel k\u00f6nnen Dataframes Daten verschiedener Typen (z. B. numerisch, zeichenweise, logisch) in derselben Tabelle speichern, w\u00e4hrend Matrizen nur Daten eines einzigen Typs speichern k\u00f6nnen. Dataframes verf\u00fcgen au\u00dferdem \u00fcber eine Vielzahl von Funktionen und Methoden zur Manipulation und Analyse der Daten, was sie zu einem leistungsstarken und flexiblen Werkzeug f\u00fcr die Arbeit mit Daten in R macht.\r\n\r\nWir erzeugen nun aus den eben erstellten Variablen einen Dataframe. Achten Sie darauf, dass alle drei Variablen (ID, ID2 und GruppenNr) auch in Ihrem \u201cGlobal Environment\u201d (Kasten rechts oben) sind, sonst erhalten Sie eine Fehlermeldung.\r\n<div id=\"cb19\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb19-1\">Datensatz <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">data.frame<\/span>(<span class=\"at\">ID =<\/span> ID,<span class=\"at\">ID2 =<\/span> ID2,<span class=\"at\">GruppenNr =<\/span> GruppenNr)<\/span><\/code><\/pre>\r\n<\/div>\r\nNun haben wir einen kleinen Datensatz mit 15 Personen, die in f\u00fcnf Dreiergruppen getestet wurden. Wir k\u00f6nnen nun noch das Geschlecht als Variable erg\u00e4nzen. Die Notation f\u00fcr eine Variable in einem Datensatz ist dabei immer <em>Datensatz$Variable<\/em>\r\n<div id=\"cb20\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb20-1\">Datensatz<span class=\"sc\">$<\/span>Geschlecht <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">c<\/span>(<span class=\"st\">\"w\"<\/span>, <span class=\"fu\">rep<\/span>(<span class=\"fu\">c<\/span>(<span class=\"st\">\"w\"<\/span>, <span class=\"st\">\"m\"<\/span>), <span class=\"at\">times =<\/span> <span class=\"dv\">7<\/span>))<\/span><\/code><\/pre>\r\n<\/div>\r\nJetzt w\u00fcrden wir normalerweise noch weitere Daten erg\u00e4nzen, wir k\u00f6nnen aber auch R bitten, f\u00fcr uns Zufallszahlen zu generieren, mit denen wir arbeiten k\u00f6nnen. Dazu nutzen wir die <em>rnorm<\/em> Funktion, um normierte Zufallszahlen zu generieren.\r\n<div id=\"cb21\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb21-1\">Datensatz<span class=\"sc\">$<\/span>Messwert <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">rnorm<\/span>(<span class=\"dv\">15<\/span>)<\/span><\/code><\/pre>\r\n<\/div>\r\nNun k\u00f6nnen wir uns den fertigen Datensatz ansehen:\r\n<div id=\"cb22\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb22-1\">Datensatz<\/span><\/code><\/pre>\r\n<\/div>\r\nAlternativ k\u00f6nnen wir uns den Datensatz auch als eigene Tabelle (vergleichbar Excel oder SPSS) anzeigen lassen:\r\n<div id=\"cb23\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb23-1\"><span class=\"fu\">View<\/span>(Datensatz)<\/span><\/code><\/pre>\r\n<\/div>\r\nHier sieht alles schon sehr gewohnt aus (zumindest wenn man Excel oder SPSS gewohnt ist), man kann jedoch nichts bearbeiten. Hierf\u00fcr gibt es in R jedoch den Dateneditor, den man mit edit() oder fix() startet. <em>fix<\/em> speichert die \u00c4nderungen automatisch. Bei <em>edit<\/em> muss man die \u00c4nderungen einem Objekt zuweisen.\r\n<div id=\"cb24\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb24-1\"><span class=\"fu\">fix<\/span>(Datensatz)<\/span><\/code><\/pre>\r\n<\/div>\r\nSie k\u00f6nnen eine Variable in einem Datensatz auch jederzeit l\u00f6schen:\r\n<div id=\"cb25\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb25-1\">Datensatz<span class=\"sc\">$<\/span>ID2 <span class=\"ot\">&lt;-<\/span> <span class=\"cn\">NULL<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nDie Variablen liegen jetzt noch doppelt im Speicher: einmal im Datensatz und einmal einzeln. Die einzelnen Variablen k\u00f6nnen wir nun auch l\u00f6schen, wenn Sie es ordentlich m\u00f6gen.\r\n<div id=\"cb26\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb26-1\"><span class=\"fu\">rm<\/span>(ID, ID2, GruppenNr) <\/span><\/code><\/pre>\r\n<\/div>\r\nWenn Sie einen neuen Datensatz erzeugt oder importiert haben, sollten Sie sich erst eine \u00dcbersicht \u00fcber die Struktur des Objektes machen. Hier hilft Ihnen die <em>str<\/em> Funktion. Wenn Sie str() f\u00fcr ein Objekt aufrufen, wird eine Zusammenfassung des Objektinhalts zur\u00fcckgegeben, einschlie\u00dflich der Klasse des Objekts, der L\u00e4nge des Objekts und der Namen und Abmessungen aller Komponenten des Objekts (z. B. Elemente einer Liste, Spalten eines Dataframes).\r\n<div id=\"cb27\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb27-1\"><span class=\"fu\">str<\/span>(Datensatz)<\/span>\r\n<span id=\"cb27-2\"><span class=\"do\">## 'data.frame':    15 obs. of  4 variables:<\/span><\/span>\r\n<span id=\"cb27-3\"><span class=\"do\">##  $ ID        : num  1 2 3 4 5 6 7 8 9 10 ...<\/span><\/span>\r\n<span id=\"cb27-4\"><span class=\"do\">##  $ GruppenNr : Factor w\/ 5 levels \"Gruppe1\",\"Gruppe2\",..: 1 1 1 2 2 2 3 3 3 4 ...<\/span><\/span>\r\n<span id=\"cb27-5\"><span class=\"do\">##  $ Geschlecht: chr  \"w\" \"w\" \"m\" \"w\" ...<\/span><\/span>\r\n<span id=\"cb27-6\"><span class=\"do\">##  $ Messwert  : num  1.3598 0.6062 -0.0418 0.1445 0.4705 ...<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nIn diesem Video zeige ich, wie das in R funktioniert:\r\n<div class=\"vembedr\" align=\"center\">\r\n<div><iframe src=\"https:\/\/www.youtube.com\/embed\/FLQ5FvZkmcs\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\r\n<\/div>\r\n<\/div>\r\n<div id=\"umgang-mit-datens\u00e4tzen\" class=\"section level2 hasAnchor\">\r\n<h1>Umgang mit Datens\u00e4tzen<\/h1>\r\nDatens\u00e4tze bestehen aus Zeilen (F\u00e4llen) und Spalten (Variablen). Mit der sog. Index-Notation in eckiger Klammer k\u00f6nnen einzelne Elemente (also eine Variable oder ein Wert) in einem Datensatz ausgew\u00e4hlt werden. Zeilen und Spalten eines Datensatzes k\u00f6nnen dabei wie folgt ausgelesen werden:\r\n<ol style=\"list-style-type: decimal;\">\r\n \t<li>Zeile:<\/li>\r\n<\/ol>\r\n<div id=\"cb28\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb28-1\">Datensatz[<span class=\"dv\">1<\/span>,]<\/span>\r\n<span id=\"cb28-2\"><span class=\"do\">##   ID GruppenNr Geschlecht Messwert<\/span><\/span>\r\n<span id=\"cb28-3\"><span class=\"do\">## 1  1   Gruppe1          w 1.359812<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\n<ol style=\"list-style-type: decimal;\">\r\n \t<li>Spalte:<\/li>\r\n<\/ol>\r\n<div id=\"cb29\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb29-1\">Datensatz[,<span class=\"dv\">1<\/span>]<\/span>\r\n<span id=\"cb29-2\"><span class=\"do\">##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nWert der 1. Zeile in der 1. Spalte:\r\n<div id=\"cb30\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb30-1\">Datensatz[<span class=\"dv\">1<\/span>,<span class=\"dv\">1<\/span>]<\/span>\r\n<span id=\"cb30-2\"><span class=\"do\">## [1] 1<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nF\u00e4lle 1, 3 und 5:\r\n<div id=\"cb31\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb31-1\">Datensatz[<span class=\"fu\">c<\/span>(<span class=\"dv\">1<\/span>,<span class=\"dv\">3<\/span>,<span class=\"dv\">5<\/span>),]<\/span>\r\n<span id=\"cb31-2\"><span class=\"do\">##   ID GruppenNr Geschlecht    Messwert<\/span><\/span>\r\n<span id=\"cb31-3\"><span class=\"do\">## 1  1   Gruppe1          w  1.35981250<\/span><\/span>\r\n<span id=\"cb31-4\"><span class=\"do\">## 3  3   Gruppe1          m -0.04182047<\/span><\/span>\r\n<span id=\"cb31-5\"><span class=\"do\">## 5  5   Gruppe2          m  0.47045845<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<div id=\"datens\u00e4tze-sortieren\" class=\"section level2 hasAnchor\">\r\n<h2>Datens\u00e4tze sortieren<\/h2>\r\nDatensatz nach der Variable Messwert aufsteigend sortiert anzeigen:\r\n<div id=\"cb32\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb32-1\">Datensatz[<span class=\"fu\">order<\/span>(Datensatz<span class=\"sc\">$<\/span>Messwert),]<\/span>\r\n<span id=\"cb32-2\"><span class=\"do\">##    ID GruppenNr Geschlecht    Messwert<\/span><\/span>\r\n<span id=\"cb32-3\"><span class=\"do\">## 8   8   Gruppe3          w -1.32590662<\/span><\/span>\r\n<span id=\"cb32-4\"><span class=\"do\">## 11 11   Gruppe4          m -0.28081031<\/span><\/span>\r\n<span id=\"cb32-5\"><span class=\"do\">## 3   3   Gruppe1          m -0.04182047<\/span><\/span>\r\n<span id=\"cb32-6\"><span class=\"do\">## 7   7   Gruppe3          m  0.06276210<\/span><\/span>\r\n<span id=\"cb32-7\"><span class=\"do\">## 14 14   Gruppe5          w  0.08925779<\/span><\/span>\r\n<span id=\"cb32-8\"><span class=\"do\">## 4   4   Gruppe2          w  0.14447396<\/span><\/span>\r\n<span id=\"cb32-9\"><span class=\"do\">## 9   9   Gruppe3          m  0.22214144<\/span><\/span>\r\n<span id=\"cb32-10\"><span class=\"do\">## 5   5   Gruppe2          m  0.47045845<\/span><\/span>\r\n<span id=\"cb32-11\"><span class=\"do\">## 2   2   Gruppe1          w  0.60618251<\/span><\/span>\r\n<span id=\"cb32-12\"><span class=\"do\">## 10 10   Gruppe4          w  0.66741066<\/span><\/span>\r\n<span id=\"cb32-13\"><span class=\"do\">## 13 13   Gruppe5          m  1.28546663<\/span><\/span>\r\n<span id=\"cb32-14\"><span class=\"do\">## 1   1   Gruppe1          w  1.35981250<\/span><\/span>\r\n<span id=\"cb32-15\"><span class=\"do\">## 15 15   Gruppe5          m  1.57101525<\/span><\/span>\r\n<span id=\"cb32-16\"><span class=\"do\">## 12 12   Gruppe4          w  1.67051430<\/span><\/span>\r\n<span id=\"cb32-17\"><span class=\"do\">## 6   6   Gruppe2          w  2.12952399<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nDies ver\u00e4ndert den Datensatz jedoch nicht dauerhaft. Wenn Sie sich den Datensatz jetzt noch mal neu anschauen sehen Sie, dass die Spalten nach wie vor gleich sortiert sind.\r\n\r\nErst wenn man den Datensatz mit dem neu sortierten Datensatz \u00fcberschreibt, ver\u00e4ndert dieser sich dauerhaft:\r\n<div id=\"cb33\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb33-1\">Datensatz <span class=\"ot\">&lt;-<\/span> Datensatz[<span class=\"fu\">order<\/span>(Datensatz<span class=\"sc\">$<\/span>Messwert),]<\/span>\r\n<span id=\"cb33-2\">Datensatz<\/span>\r\n<span id=\"cb33-3\"><span class=\"do\">##    ID GruppenNr Geschlecht    Messwert<\/span><\/span>\r\n<span id=\"cb33-4\"><span class=\"do\">## 8   8   Gruppe3          w -1.32590662<\/span><\/span>\r\n<span id=\"cb33-5\"><span class=\"do\">## 11 11   Gruppe4          m -0.28081031<\/span><\/span>\r\n<span id=\"cb33-6\"><span class=\"do\">## 3   3   Gruppe1          m -0.04182047<\/span><\/span>\r\n<span id=\"cb33-7\"><span class=\"do\">## 7   7   Gruppe3          m  0.06276210<\/span><\/span>\r\n<span id=\"cb33-8\"><span class=\"do\">## 14 14   Gruppe5          w  0.08925779<\/span><\/span>\r\n<span id=\"cb33-9\"><span class=\"do\">## 4   4   Gruppe2          w  0.14447396<\/span><\/span>\r\n<span id=\"cb33-10\"><span class=\"do\">## 9   9   Gruppe3          m  0.22214144<\/span><\/span>\r\n<span id=\"cb33-11\"><span class=\"do\">## 5   5   Gruppe2          m  0.47045845<\/span><\/span>\r\n<span id=\"cb33-12\"><span class=\"do\">## 2   2   Gruppe1          w  0.60618251<\/span><\/span>\r\n<span id=\"cb33-13\"><span class=\"do\">## 10 10   Gruppe4          w  0.66741066<\/span><\/span>\r\n<span id=\"cb33-14\"><span class=\"do\">## 13 13   Gruppe5          m  1.28546663<\/span><\/span>\r\n<span id=\"cb33-15\"><span class=\"do\">## 1   1   Gruppe1          w  1.35981250<\/span><\/span>\r\n<span id=\"cb33-16\"><span class=\"do\">## 15 15   Gruppe5          m  1.57101525<\/span><\/span>\r\n<span id=\"cb33-17\"><span class=\"do\">## 12 12   Gruppe4          w  1.67051430<\/span><\/span>\r\n<span id=\"cb33-18\"><span class=\"do\">## 6   6   Gruppe2          w  2.12952399<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nWir sortieren ihn wieder zur\u00fcck:\r\n<div id=\"cb34\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb34-1\">Datensatz <span class=\"ot\">&lt;-<\/span> Datensatz[<span class=\"fu\">order<\/span>(Datensatz<span class=\"sc\">$<\/span>ID),]<\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<div id=\"umgang-mit-datens\u00e4tzen-fallauswahl\" class=\"section level2 hasAnchor\">\r\n<h1>Umgang mit Datens\u00e4tzen: Fallauswahl<\/h1>\r\nR verf\u00fcgt \u00fcber eine breite Palette von Operatoren zur Durchf\u00fchrung von Operationen mit Objekten wie Vektoren, Matrizen und Datenrahmen. Im Folgenden finden Sie eine Liste der wichtigsten Operatoren in R:\r\n<ol style=\"list-style-type: decimal;\">\r\n \t<li>Arithmetische Operatoren: Diese Operatoren f\u00fchren grundlegende arithmetische Operationen durch, wie z. B. Addition (+), Subtraktion (-), Multiplikation (*) und Division (\/). Sie k\u00f6nnen verwendet werden, um Berechnungen mit numerischen Objekten, wie Vektoren und Matrizen, durchzuf\u00fchren.<\/li>\r\n \t<li>Vergleichsoperatoren: Diese Operatoren vergleichen zwei Objekte und geben einen logischen Wert (TRUE oder FALSE) zur\u00fcck. Zu den Vergleichsoperatoren in R geh\u00f6ren gleich (==), nicht gleich (!=), kleiner als (&lt;), gr\u00f6\u00dfer als (&gt;), kleiner oder gleich (&lt;=) und gr\u00f6\u00dfer oder gleich (&gt;=).<\/li>\r\n \t<li>Logische Operatoren: Diese Operatoren f\u00fchren logische Operationen mit logischen Objekten durch (d.\u00a0h. TRUE oder FALSE). Zu den logischen Operatoren in R geh\u00f6ren und (&amp;&amp;), oder (||) und nicht (!).<\/li>\r\n<\/ol>\r\nMit den letzen beiden Arten von Operatoren wollen wir uns nun kurz auseinandersetzen. Die Operatoren == (ist gleich), != (ungleich), &gt;=, (gr\u00f6sser gleich), &lt;= (kleiner gleich) sowie | (oder) und &amp; (und) vergleichen JEDEN Wert einer Variable mit dem Vergleichsobjekt und liefern f\u00fcr jeden Vergleich TRUE oder FALSE zur\u00fcck. Machen wir ein einfaches Beispiel.\r\n\r\nAlle weiblichen:\r\n<div id=\"cb35\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb35-1\">Datensatz<span class=\"sc\">$<\/span>Geschlecht <span class=\"sc\">==<\/span> <span class=\"st\">\"w\"<\/span><\/span>\r\n<span id=\"cb35-2\"><span class=\"do\">##  [1]  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE<\/span><\/span>\r\n<span id=\"cb35-3\"><span class=\"do\">## [11] FALSE  TRUE FALSE  TRUE FALSE<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nAlle nicht m\u00e4nnlichen:\r\n<div id=\"cb36\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb36-1\">Datensatz<span class=\"sc\">$<\/span>Geschlecht <span class=\"sc\">!=<\/span> <span class=\"st\">\"m\"<\/span><\/span>\r\n<span id=\"cb36-2\"><span class=\"do\">##  [1]  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE<\/span><\/span>\r\n<span id=\"cb36-3\"><span class=\"do\">## [11] FALSE  TRUE FALSE  TRUE FALSE<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nDas ist sehr n\u00fctzlich, weil man so F\u00e4lle anderer Variablen ausw\u00e4hlen kann, die eine Bedingung erf\u00fcllen. Zum Beispiel alle F\u00e4lle von Variable A, bei denen das Geschlecht \u201cw\u201d ist:\r\n<div id=\"cb37\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb37-1\">Datensatz<span class=\"sc\">$<\/span>Messwert[Datensatz<span class=\"sc\">$<\/span>Geschlecht <span class=\"sc\">==<\/span> <span class=\"st\">\"w\"<\/span>]<\/span>\r\n<span id=\"cb37-2\"><span class=\"do\">## [1]  1.35981250  0.60618251  0.14447396  2.12952399 -1.32590662<\/span><\/span>\r\n<span id=\"cb37-3\"><span class=\"do\">## [6]  0.66741066  1.67051430  0.08925779<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\noder Sie k\u00f6nnen den Mittelwert der weiblichen Personen in einer neuen Variable speichern:\r\n<div id=\"cb38\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb38-1\">x <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">mean<\/span>(Datensatz<span class=\"sc\">$<\/span>Messwert[Datensatz<span class=\"sc\">$<\/span>Geschlecht <span class=\"sc\">==<\/span> <span class=\"st\">\"m\"<\/span>])<\/span>\r\n<span id=\"cb38-2\">x<\/span>\r\n<span id=\"cb38-3\"><span class=\"do\">## [1] 0.4698876<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nDiese beiden Ausdr\u00fccke k\u00f6nnte man bspw. mit einem t-Test vergleichen\r\n(dazu sp\u00e4ter mehr).\r\n\r\nIn diesem Video zeige ich, wie das in R funktioniert:\r\n<div class=\"vembedr\" align=\"center\">\r\n<div><iframe src=\"https:\/\/www.youtube.com\/embed\/6dwVssrKFKw\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\r\n<\/div>\r\n<\/div>\r\n<div id=\"\u00fcbung-1\" class=\"section level2 hasAnchor\">\r\n<h1>\u00dcbung<\/h1>\r\n<ul>\r\n \t<li>W\u00e4hlen Sie die Variable \u201cMesswert\u201d aus dem Datensatz aus. Verwenden Sie daf\u00fcr einmal die Dollar-Notation($) und einmal die Index-Notation (eckige Klammern)<\/li>\r\n \t<li>Lassen Sie sich den Messwert f\u00fcr die Person mit ID = 9 ausgeben.<\/li>\r\n \t<li>Lassen Sie sich die Messwerte f\u00fcr alle Personen der Gruppe 3 ausgeben<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\nDie L\u00f6sung zu dieser \u00dcbungsaufgabe gibt es im neuen Buch<a href=\"https:\/\/amzn.to\/3MLBUb8\"> Statistik mit R &amp; RStudio<\/a>.\r\n\r\n<a href=\"https:\/\/amzn.to\/3MLBUb8\"><img class=\"alignnone size-full wp-image-1822\" src=\"http:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz1.png\" alt=\"\" width=\"900\" height=\"577\" \/><\/a>\r\n\r\n<\/div>\r\n<div id=\"datens\u00e4tze-im-long--und-im-wide-format\" class=\"section level2 hasAnchor\">\r\n<h1>Datens\u00e4tze im Long- und im Wide-Format<\/h1>\r\nGrunds\u00e4tzlich k\u00f6nnen Daten im \u201cWide\u201d und im \u201cLong\u201d Format vorliegen. R kann gunds\u00e4tzlich mit beidem arbeiten (anders als SPSS), jedoch verlangen bestimmte R Funktionen, dass die Daten in einem bestimmten Format vorliegen. Wir m\u00fcssen sie daher transformieren.\r\n\r\nDie Daten in \u2018Datensatz\u2019 liegen im Wide-Format vor, d.\u00a0h. jede Variable hat eine neue Spalte (wie in SPSS)\r\n\r\nNehmen wir z. B. an, wir messen die Klausurnote in Statistik von 6 Studierenden ohne Tutorium (Gruppe 1) und 6 Studierenden mit Tutorium (Gruppe 2), um festzustellen, ob das Tutorium sich positiv auf die Note auswirkt\r\n\r\nDie Daten liegen wie folgt vor:\r\n<div id=\"cb39\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb39-1\">Gruppe1 <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">c<\/span>(<span class=\"fl\">2.2<\/span>,<span class=\"fl\">1.7<\/span>,<span class=\"fl\">3.3<\/span>,<span class=\"fl\">2.3<\/span>,<span class=\"fl\">1.7<\/span>,<span class=\"dv\">2<\/span>)<\/span>\r\n<span id=\"cb39-2\">Gruppe2 <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">c<\/span>(<span class=\"fl\">2.7<\/span>,<span class=\"fl\">1.7<\/span>,<span class=\"dv\">2<\/span>,<span class=\"fl\">3.3<\/span>,<span class=\"fl\">1.7<\/span>,<span class=\"dv\">2<\/span>)<\/span>\r\n<span id=\"cb39-3\">Noten <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">data.frame<\/span>(Gruppe1,Gruppe2)<\/span><\/code><\/pre>\r\n<\/div>\r\nSchauen wir uns die Daten zun\u00e4chst an (diese sind im Wide-Format)\r\n<div id=\"cb40\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb40-1\">Noten<\/span>\r\n<span id=\"cb40-2\"><span class=\"do\">##   Gruppe1 Gruppe2<\/span><\/span>\r\n<span id=\"cb40-3\"><span class=\"do\">## 1     2.2     2.7<\/span><\/span>\r\n<span id=\"cb40-4\"><span class=\"do\">## 2     1.7     1.7<\/span><\/span>\r\n<span id=\"cb40-5\"><span class=\"do\">## 3     3.3     2.0<\/span><\/span>\r\n<span id=\"cb40-6\"><span class=\"do\">## 4     2.3     3.3<\/span><\/span>\r\n<span id=\"cb40-7\"><span class=\"do\">## 5     1.7     1.7<\/span><\/span>\r\n<span id=\"cb40-8\"><span class=\"do\">## 6     2.0     2.0<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nJetzt wandeln wir die Daten in das Long-Format um. Hierzu nutzen wir die <em>stack<\/em> Funktion.\r\n<div id=\"cb41\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb41-1\">Noten.Long<span class=\"ot\">&lt;-<\/span><span class=\"fu\">stack<\/span>(Noten)<\/span>\r\n<span id=\"cb41-2\">Noten.Long<\/span>\r\n<span id=\"cb41-3\"><span class=\"do\">##    values     ind<\/span><\/span>\r\n<span id=\"cb41-4\"><span class=\"do\">## 1     2.2 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-5\"><span class=\"do\">## 2     1.7 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-6\"><span class=\"do\">## 3     3.3 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-7\"><span class=\"do\">## 4     2.3 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-8\"><span class=\"do\">## 5     1.7 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-9\"><span class=\"do\">## 6     2.0 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-10\"><span class=\"do\">## 7     2.7 Gruppe2<\/span><\/span>\r\n<span id=\"cb41-11\"><span class=\"do\">## 8     1.7 Gruppe2<\/span><\/span>\r\n<span id=\"cb41-12\"><span class=\"do\">## 9     2.0 Gruppe2<\/span><\/span>\r\n<span id=\"cb41-13\"><span class=\"do\">## 10    3.3 Gruppe2<\/span><\/span>\r\n<span id=\"cb41-14\"><span class=\"do\">## 11    1.7 Gruppe2<\/span><\/span>\r\n<span id=\"cb41-15\"><span class=\"do\">## 12    2.0 Gruppe2<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nDas ganze geht nat\u00fcrlich auch umgekehrt, dazu nutzen wir die <em>unstack<\/em> Funktion:\r\n<div id=\"cb42\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb42-1\">Noten2<span class=\"ot\">&lt;-<\/span><span class=\"fu\">unstack<\/span>(Noten.Long)<\/span>\r\n<span id=\"cb42-2\">Noten2<\/span>\r\n<span id=\"cb42-3\"><span class=\"do\">##   Gruppe1 Gruppe2<\/span><\/span>\r\n<span id=\"cb42-4\"><span class=\"do\">## 1     2.2     2.7<\/span><\/span>\r\n<span id=\"cb42-5\"><span class=\"do\">## 2     1.7     1.7<\/span><\/span>\r\n<span id=\"cb42-6\"><span class=\"do\">## 3     3.3     2.0<\/span><\/span>\r\n<span id=\"cb42-7\"><span class=\"do\">## 4     2.3     3.3<\/span><\/span>\r\n<span id=\"cb42-8\"><span class=\"do\">## 5     1.7     1.7<\/span><\/span>\r\n<span id=\"cb42-9\"><span class=\"do\">## 6     2.0     2.0<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\n\u2018Noten2\u2019 ist nun wieder im Wide-Format also gleich dem Ursprungs-Datensatz \u2018Noten\u2019\r\n\r\nIn diesem Video zeige ich, wie das in R funktioniert:\r\n<div class=\"vembedr\" align=\"center\">\r\n<div><iframe src=\"https:\/\/www.youtube.com\/embed\/gOJf_e2nzLc\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\r\n<\/div>\r\n<\/div>\r\n<div id=\"datens\u00e4tze-als-csv-speichern-und-laden\" class=\"section level2 hasAnchor\">\r\n<h1>Datens\u00e4tze als csv speichern und laden<\/h1>\r\nWenn man den Arbeitsbereich wie zuvor beschrieben speichert (Workspace -&gt; Save Workspace As\u2026), werden auch alle im Arbeitsbereich enthaltenen Datens\u00e4tze gespeichert.\r\n\r\nMan kann Datens\u00e4tze auch als einzelne Datei abspeichern, um sie mit anderen Programmen, z. B. Excel oder SPSS, zu \u00f6ffnen. Grunds\u00e4tzlich sollten Sie alle Daten, die Sie sp\u00e4ter noch ben\u00f6tigen, als eigene Datendatei speichern.\r\n\r\nR speichert Datens\u00e4tze als Textdateien, als tab-delimited (tabulator-getrennt) oder als csv-Datei (comma separated value). Leider gibt es unterschiedliche .csv Formate. Dies liegt daran, dass eine Trennung durch ein Komma im Deutschen zu Verwirrungen f\u00fchren w\u00fcrde (Ist 2,2 nun eine Zahl oder zwei durch Komma getrennte Zahlen?). Daher nutzen wir in Deutschland ein csv-Format, dass Werte durch Strichpunkt abtrennt. Nur dieses k\u00f6nnen Sie mit einem auf Deutsch eingestellten Excel-Programm auch wieder \u00f6ffen. Um eine solche Datei zu erzeugen, verwendet man den Befehl <em>write.csv2()<\/em>.\r\n<div id=\"cb43\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb43-1\"><span class=\"fu\">write.csv2<\/span>(Datensatz, <span class=\"at\">file =<\/span> <span class=\"st\">\"Datensatz.csv\"<\/span>, <span class=\"at\">row.names =<\/span> <span class=\"cn\">FALSE<\/span>)<\/span><\/code><\/pre>\r\n<\/div>\r\nUm die Datei dann wieder zu laden, geht man wie folgt vor:\r\n<div id=\"cb44\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb44-1\">Datensatz <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">read.csv2<\/span>(<span class=\"st\">\"Datensatz.csv\"<\/span>)<\/span><\/code><\/pre>\r\n<\/div>\r\nIn diesem Video zeige ich, wie das in R funktioniert:\r\n<div class=\"vembedr\" align=\"center\">\r\n<div><iframe src=\"https:\/\/www.youtube.com\/embed\/L-ZOdjz4po4\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\r\n<\/div>\r\n<\/div>\r\n<div id=\"spss-datens\u00e4tze-einlesen\" class=\"section level2 hasAnchor\">\r\n<h1>SPSS Datens\u00e4tze einlesen<\/h1>\r\nR ben\u00f6tigt eine Erweiterung, um SPSS-Daten einlesen zu k\u00f6nnen. H\u00e4ufig verwendete Pakete, mit dem R SPSS-Dateien lesen kann, sind \u2018foreign\u2019 und \u2018haven\u2019. Beide sind bereits in der R-Installation vorhanden. Wenn Sie in R-Studio \u00fcber das Men\u00fc \u201cImport Dataset\u201d SPSS ausw\u00e4hlen, nutzen Sie das \u2018haven\u2019 Paket.\r\n\r\nSPSS-Datensatz \u2018WPStudi.sav\u2019 mit Paket <em>haven<\/em> importieren (alternativ \u00fcber Men\u00fc):\r\n<div id=\"cb45\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb45-1\"><span class=\"fu\">library<\/span>(haven)<\/span>\r\n<span id=\"cb45-2\">WPStudis_mit_haven <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">read_sav<\/span>(<span class=\"st\">\"WPStudis.sav\"<\/span>)<\/span><\/code><\/pre>\r\n<\/div>\r\nBetrachten Sie die Daten. Nutzen Sie dazu die Befehle <em>View()<\/em> bzw. <em>str()<\/em>.\r\n\r\nWir wiederholen den Import mit dem Paket <em>foreign<\/em>\r\n<div id=\"cb46\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb46-1\"><span class=\"fu\">library<\/span>(foreign)<\/span>\r\n<span id=\"cb46-2\">WPStudis_mit_foreign <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">read.spss<\/span>(<span class=\"at\">file=<\/span><span class=\"st\">\"WPStudis.sav\"<\/span>, <span class=\"at\">to.data.frame =<\/span> T)<\/span><\/code><\/pre>\r\n<\/div>\r\nBetrachten Sie die Daten wieder mit <em>View<\/em> bzw. <em>str<\/em>.\r\n\r\nHaben Sie die Unterschiede bemerkt? Achten Sie z. B. auf die Variable Geschlecht. <em>Haven<\/em> erzeugt belabelte Vektoren, bei denen die Faktorstufen numerisch sind (z. B. \u201c0\u201d f\u00fcr weiblich), w\u00e4hrend <em>foreign<\/em> Faktoren mit den Labels als Faktorstufen erzeugt. Dies ist zwar besser, jedoch wird im <em>foreign<\/em> Paket z. B. die Variable <em>Alter<\/em> als Faktor erzeugt (sollte numerisch sein). In Summe haben alle Importfunktionen von SPSS ihre St\u00e4rken und Schw\u00e4chen. Sie sollten daher grunds\u00e4tzlich den importierten Datensatz nochmal von Hand pr\u00fcfen und korrigieren.\r\n\r\nIn diesem Video zeige ich, wie das in R funktioniert:\r\n<div class=\"vembedr\" align=\"center\">\r\n<div><iframe src=\"https:\/\/www.youtube.com\/embed\/siqk8BssV8U\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\r\n<\/div>\r\n<\/div>\r\n<div id=\"datenmanagement-mit-tidyverse\" class=\"section level2 hasAnchor\">\r\n<h1>Datenmanagement mit Tidyverse<\/h1>\r\nAlternativ zu den bisher besprochenen Methoden k\u00f6nnen Datens\u00e4tze oft auch bequemer mit Funktionen aus der <em>tidyverse<\/em> Familie bearbeitet werden. Zentral ist hierbei die standardisierte Notation: Datensatz &lt;- Datensatz %&gt;% Funktion. Der Befehl <em>%&gt;%<\/em> wird \u201cPipe\u201d genannt und dr\u00fcckt aus, dass alles was rechts davon steht auf alles links davon angewendet wird.\r\n\r\nWenn wir nun zum Beispiel in unserem Datensatz den Messwert mit 100 multiplizieren wollen, k\u00f6nnen wir Folgendes eingeben:\r\n<div id=\"cb47\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb47-1\">Datensatz<span class=\"sc\">$<\/span>Messwert <span class=\"ot\">&lt;-<\/span> Datensatz<span class=\"sc\">$<\/span>Messwert<span class=\"sc\">*<\/span><span class=\"dv\">100<\/span><\/span><\/code><\/pre>\r\n<\/div>\r\nAlternativ k\u00f6nnen wir mit der sogenannten \u201cPipe\u201d aus tidyverse und dem tidyverse Funktion <em>mutate()<\/em> die Variablen ver\u00e4ndern:\r\n<div id=\"cb48\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb48-1\"><span class=\"fu\">library<\/span>(tidyverse)<\/span>\r\n<span id=\"cb48-2\">Datensatz <span class=\"ot\">&lt;-<\/span> Datensatz <span class=\"sc\">%&gt;%<\/span> <span class=\"fu\">mutate<\/span>(Messwert<span class=\"sc\">*<\/span><span class=\"dv\">100<\/span>)<\/span><\/code><\/pre>\r\n<\/div>\r\nLetzeres klingt bei dieser einfachen Operation deutlich aufw\u00e4ndiger. Aber wie wir sp\u00e4ter bei verschachtelten Befehlen sehen werden, kann diese Notation von tidyverse auch durchaus Vorteile bringen.\r\n\r\nMit der <em>mutate<\/em> Funktion lassen sich auch einzelne Werte \u00e4ndern oder der Variablentyp anpassen. Nehmen wir an, wir wollen aus \u201cID\u201d einen Faktor machen:\r\n<div id=\"cb49\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb49-1\">Datensatz <span class=\"ot\">&lt;-<\/span> Datensatz <span class=\"sc\">%&gt;%<\/span> <span class=\"fu\">mutate<\/span>(<span class=\"at\">ID =<\/span> <span class=\"fu\">factor<\/span>(ID))<\/span><\/code><\/pre>\r\n<\/div>\r\nEin weiterer hilfreicher Befehl f\u00fcr das Datenmanagement aus dem tidyverse ist <em>rename<\/em>. Hiermit lassen sich Variablen einfach umbennenen.\r\n\r\nNutzen wir daf\u00fcr die Daten \u201cNoten\u201d von eben und bennenen die Gruppen 1 und 2 in Gruppe A und B um:\r\n<div id=\"cb50\" class=\"sourceCode\">\r\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb50-1\">Noten <span class=\"ot\">&lt;-<\/span> Noten <span class=\"sc\">%&gt;%<\/span> <span class=\"fu\">rename<\/span>(<span class=\"at\">GruppeA =<\/span> Gruppe1, <span class=\"at\">GruppeB =<\/span> Gruppe2)<\/span><\/code><\/pre>\r\n<\/div>\r\nIn diesem Video zeige ich, wie das in R funktioniert:\r\n<div class=\"vembedr\" align=\"center\">\r\n<div><iframe src=\"https:\/\/www.youtube.com\/embed\/b_Yr07WJLxE\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\r\n<\/div>\r\n<\/div>\r\n<div id=\"\u00fcbung-2\" class=\"section level2 hasAnchor\">\r\n<h1>\u00dcbung<\/h1>\r\n<ul>\r\n \t<li>Nutzen Sie tidyverse, um im Datensatz die Messewerte jeweils zu halbieren.<\/li>\r\n \t<li>Nutzen Sie tidyverse, um im Datensatz die Variable \u201cGeschlecht\u201d in \u201cGender\u201d umzubenennen.<\/li>\r\n<\/ul>\r\nDie L\u00f6sung zu dieser \u00dcbungsaufgabe gibt es im neuen Buch<a href=\"https:\/\/amzn.to\/3MLBUb8\"> Statistik mit R &amp; RStudio<\/a>.\r\n\r\n<a href=\"https:\/\/amzn.to\/3MLBUb8\"><img class=\"alignnone size-full wp-image-1822\" src=\"http:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz2.png\" alt=\"\" width=\"900\" height=\"577\" \/><\/a>\r\nEs gibt noch viele weitere n\u00fctzliche Funktionen bei tidyverse. Wer hier mehr erfahren m\u00f6chte, wird unter: <a class=\"uri\" href=\"https:\/\/tidyverse.tidyverse.org\/\">https:\/\/tidyverse.tidyverse.org\/<\/a> f\u00fcndig.\r\n\r\n<\/div>","rendered":"<h1>Datenmanagement<\/h1>\n<p>R ist ein leistungsstarkes Werkzeug f\u00fcr die Datenverwaltung und Datenbereinigung. R verf\u00fcgt \u00fcber zahlreiche Funktionen und Pakete zum Importieren, Exportieren und Manipulieren von Daten und kann mit einer Vielzahl von Dateitypen und Datenformaten umgehen.<\/p>\n<p>Ein Vorteil von R f\u00fcr die Datenverwaltung besteht darin, dass Sie Code schreiben k\u00f6nnen, um Datenbearbeitungsaufgaben zu automatisieren, was effizienter sein kann als die Verwendung von Point-and-Click-Programmen wie SPSS. So k\u00f6nnen Sie beispielsweise Code schreiben, um Aufgaben wie das Umbenennen von Variablen, das Umkodieren von Werten und das Zusammenf\u00fchren von Datens\u00e4tzen durchzuf\u00fchren. Dies kann besonders n\u00fctzlich sein, um gro\u00dfe und komplexe Datens\u00e4tze zu bearbeiten oder um sich wiederholende Aufgaben auszuf\u00fchren.<\/p>\n<p>R verf\u00fcgt auch \u00fcber eine Reihe von Paketen zur Datenbereinigung, wie z. B. tidyverse, das eine Reihe von Tools zur Datenmanipulation und -visualisierung bereitstellt. Diese Pakete erleichtern die Identifizierung und Korrektur von Fehlern in den Daten sowie die Neuformatierung und Umgestaltung der Daten nach Bedarf.<\/p>\n<p>Im Vergleich dazu verf\u00fcgen SPSS und Excel ebenfalls \u00fcber Funktionen f\u00fcr die Datenverwaltung und -bereinigung, z. B. Sortier- und Filterwerkzeuge, Pivot-Tabellen und Funktionen zur Datenmanipulation. Allerdings sind diese Tools weniger flexibel und leistungsf\u00e4hig als die in R verf\u00fcgbaren, insbesondere bei der Handhabung gro\u00dfer und komplexer Datens\u00e4tze oder bei der Automatisierung von Aufgaben.<\/p>\n<p>Insgesamt ist R eine gute Wahl f\u00fcr das Datenmanagement und die Datenbereinigung, insbesondere f\u00fcr Benutzer, die bereit sind, sich mit der Programmierung vertraut zu machen und komplexe oder sich wiederholende Aufgaben durchf\u00fchren m\u00fcssen. Software wie SPSS und Excel sind jedoch m\u00f6glicherweise f\u00fcr Nutzer, die mit diesen Programmen vertraut sind, der schnellere Weg, um mit kleineren oder einfacheren Datens\u00e4tzen arbeiten.<\/p>\n<div id=\"einf\u00fchrung-syntax-umgang-mit-daten-und-datens\u00e4tzen\" class=\"section level2 hasAnchor\">\n<h1>Einf\u00fchrung: Syntax, Umgang mit Daten und Datens\u00e4tzen<\/h1>\n<p>Den R Syntax (also die Programmiersprache) zu erlernen, ist die gr\u00f6\u00dfte Herausforderung im Umgang mit R. Wie schwer es Ihnen f\u00e4llt, den Syntax zu lernen, h\u00e4ngt von Ihrer bisherigen Programmiererfahrung und Ihren Zielen ab. Der beste Weg, die R Syntax zu lernen, besteht darin, das Schreiben und Ausf\u00fchren von Code zu \u00fcben. Wir werden mit einfachen Skripten beginnen und uns dann schrittweise an komplexere Aufgaben herantasten. Bald wird es Ihnen ganz nat\u00fcrlich vorkommen, R Syntax zu schreiben. Los geht es mit ein paar Basics:<\/p>\n<ul>\n<li>R unterscheidet zwischen Gro\u00df- und Kleinschreibung, was bedeutet, dass x und X als unterschiedliche Variablen behandelt werden.<\/li>\n<li>R verwendet #, um den Beginn eines Kommentars anzuzeigen. Alles, was nach # in derselben Zeile steht, wird vom Programm ignoriert.<\/li>\n<li>R verwendet &lt;- oder =, um Variablen Werte zuzuweisen. Zum Beispiel weisen x &lt;- 5 und x = 5 der Variablen x den Wert 5 zu.<\/li>\n<li>R verwendet (), um Funktionsargumente anzugeben. Zum Beispiel berechnet mean(x) den Mittelwert der Werte in x.<\/li>\n<li>R verwendet [ ], um Elemente eines Vektors oder einer Matrix zu indizieren. Zum Beispiel ruft x[1] das erste Element von x ab.<\/li>\n<li>R verwendet [, ], um Elemente einer Matrix zu indizieren. Zum Beispiel ruft x[1, 2] das Element in der ersten Zeile und zweiten Spalte von x ab. Dazu gleich mehr.<\/li>\n<\/ul>\n<p>Starten wir einfach mit einem Beispiel: \u2018x &lt;- 3 + 4\u2019 speichert das Ergebnis des Terms \u20183+4\u2019 in das Objekt x. Um das Ergebnis zu sehen, muss x angezeigt werden:<\/p>\n<div id=\"cb1\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb1-1\">x <span class=\"ot\">&lt;-<\/span> <span class=\"dv\">3<\/span> <span class=\"sc\">+<\/span> <span class=\"dv\">4<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Hinweis: Objekte in R k\u00f6nnen Variablen, Datens\u00e4tze (sog. dataframes) oder Funktionen sein. Dazu sp\u00e4ter mehr. In Ihrem Environment (rechts oben in RStudio) sollte jetzt das Objekt \u201cx\u201d zu sehen sein. Um in der Konsole zu pr\u00fcfen, was im Speicher ist, k\u00f6nnen Sie Folgendes eingeben:<\/p>\n<div id=\"cb2\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb2-1\"><span class=\"fu\">ls<\/span>()<\/span><\/code><\/pre>\n<\/div>\n<p>Nun l\u00f6schen wir das Objekt x wieder:<\/p>\n<div id=\"cb3\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb3-1\"><span class=\"fu\">rm<\/span>(x)<\/span><\/code><\/pre>\n<\/div>\n<p>In R arbeitet man in der Regel in einem Verzeichnis pro Projekt. Das Verzeichnis w\u00e4hlt man, indem man in RStudio im Fenster unten rechts (\u201cFiles\u201d-Tab) in das gew\u00fcnschte Verzeichnis navigiert und dort unter \u201cMore\u201d \u201cSet As Working Directory\u201d ausw\u00e4hlt. Sie k\u00f6nnen dieses auch mit dem Befehl <em>setwd()<\/em> festlegen z. B. <em>setwd(\u201cC:\/Working Directory\u201d))<\/em><\/p>\n<p>So pr\u00fcfen Sie das aktuelle Arbeitsverzeichnis in R:<\/p>\n<div id=\"cb4\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb4-1\"><span class=\"fu\">getwd<\/span>()<\/span><\/code><\/pre>\n<\/div>\n<p>Hilfe erhalten:<br \/>\n&#8211; das Hilfesystem von R ist in RStudio unten rechts mit dem \u201cHelp\u201d-Tab erreichbar<br \/>\n* Hilfe zu einem Stichwort gibt es mit ?? \u201cStichwort\u201d z. B.: ?? \u201cmean\u201d<br \/>\n* Hilfe zu einem bekannten Befehl gibt es mit ?befehl(), z. B.:<\/p>\n<div id=\"cb5\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb5-1\">?<span class=\"fu\">mean<\/span>()<\/span><\/code><\/pre>\n<\/div>\n<p>Schnelle Antworten gibt es auf Google &#8211; Da \u201cR\u201d jedoch schwer zu googlen ist, gibt es spezielle Suchmaschinen wie auf www.rseek.org, die nur R bezogene Ergebnisse liefern.<\/p>\n<\/div>\n<div id=\"dateien-speichern-und-laden\" class=\"section level2 hasAnchor\">\n<h1>Dateien speichern und laden<\/h1>\n<p>Wenn man \u201cFile -&gt; Save As\u2026\u201d ausw\u00e4hlt, speichert man das aktuelle Skript (die aktuelle Syntax) als Textdatei mit der Endung .R.<\/p>\n<p>Wenn man \u201cSession -&gt; Save Workspace As\u2026\u201d ausw\u00e4hlt, wird der Inhalt des Workspace gespeichert.<\/p>\n<p>Entsprechend l\u00e4dt man den Workspace mit \u201cSession -&gt; Load Workspace\u201d<\/p>\n<p>Es lassen sich auch \u201cProjekte\u201d speichern, diese beinhalten alle Dateien (Skripte, Daten etc.) wie auch Einstellungen und sollten in einem getrennten Ordner angelegt werden.<\/p>\n<\/div>\n<div id=\"umgang-mit-variablen\" class=\"section level2 hasAnchor\">\n<h1>Umgang mit Variablen<\/h1>\n<p>Wir werden zun\u00e4chst eine einfache Variable erzeugen: Eine Zahlenfolge. Zahlenfolgen lassen sich auf unterschiedliche Weise erzeugen, z. B. mit der seq() Funktion und dem \u201c:\u201d &#8211; Befehl. So erzeuges Sie zum Beispiel die Zahlen 1 bis 15:<\/p>\n<div id=\"cb6\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb6-1\">ID  <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">seq<\/span> (<span class=\"dv\">1<\/span><span class=\"sc\">:<\/span><span class=\"dv\">15<\/span>)               <\/span>\r\n<span id=\"cb6-2\">ID<\/span>\r\n<span id=\"cb6-3\"><span class=\"do\">##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Alternativ k\u00f6nnen Sie dies auch durch Angabe des Start- und Endpunkts, durch Komma getrennt, eingeben. Zus\u00e4tzlich k\u00f6nnen Sie durch <em>by<\/em> die Schritte definieren:<\/p>\n<div id=\"cb7\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb7-1\">ID2 <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">seq<\/span>(<span class=\"dv\">13<\/span>, <span class=\"sc\">-<\/span><span class=\"dv\">1<\/span>, <span class=\"at\">by =<\/span> <span class=\"sc\">-<\/span><span class=\"dv\">1<\/span>)<\/span>\r\n<span id=\"cb7-2\">ID2<\/span>\r\n<span id=\"cb7-3\"><span class=\"do\">##  [1] 13 12 11 10  9  8  7  6  5  4  3  2  1  0 -1<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Wenn Sie keine aufeinanderfolgenden Zahlen in der Variable anlegen wollen, dann k\u00f6nnen Sie beliebige Werte mit dem <em>c()<\/em> Befehl (f\u00fcr \u201cCombine\u201d &#8211; f\u00fcr Kombine) zusammenf\u00fcgen:<\/p>\n<div id=\"cb8\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb8-1\">Test <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">c<\/span>(<span class=\"dv\">1<\/span>,<span class=\"dv\">3<\/span>,<span class=\"dv\">5<\/span>,<span class=\"dv\">7<\/span><span class=\"sc\">:<\/span><span class=\"dv\">10<\/span>)<\/span>\r\n<span id=\"cb8-2\">Test<\/span>\r\n<span id=\"cb8-3\"><span class=\"do\">## [1]  1  3  5  7  8  9 10<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Eine weitere Variante ist der <em>rep()<\/em> Befehl (f\u00fcr Repeat &#8211; Wiederholen) &#8211; Dies kann man nat\u00fcrlich auch kombinieren:<\/p>\n<div id=\"cb9\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb9-1\">GruppenNr <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">c<\/span>(<span class=\"fu\">rep<\/span>(<span class=\"dv\">1<\/span>, <span class=\"at\">times =<\/span> <span class=\"dv\">3<\/span>), <span class=\"fu\">rep<\/span>(<span class=\"dv\">2<\/span>, <span class=\"at\">times =<\/span> <span class=\"dv\">3<\/span>), <span class=\"fu\">rep<\/span>(<span class=\"dv\">3<\/span>, <span class=\"at\">times =<\/span> <span class=\"dv\">3<\/span>), <\/span>\r\n<span id=\"cb9-2\">               <span class=\"fu\">rep<\/span>(<span class=\"dv\">4<\/span>, <span class=\"at\">times =<\/span> <span class=\"dv\">3<\/span>), <span class=\"fu\">rep<\/span>(<span class=\"dv\">5<\/span>, <span class=\"at\">times =<\/span> <span class=\"dv\">3<\/span>))<\/span>\r\n<span id=\"cb9-3\">GruppenNr<\/span>\r\n<span id=\"cb9-4\"><span class=\"do\">##  [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>In diesem Video zeige ich, wie das in R funktioniert:<\/p>\n<div class=\"vembedr\" style=\"margin: auto;\">\n<div><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/MImRbiRey2M\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<div id=\"\u00fcbung\" class=\"section level2 hasAnchor\">\n<h1>\u00dcbung<\/h1>\n<ul>\n<li>Erzeugen Sie eine Variable \u201cV1\u201d mit den Zahlen: 18 bis 3 in 3er Schritten<\/li>\n<li>Erzeugen Sie eine Variable \u201cV2\u201d mit 10 mal der Zahlenfolge 1,2,3<\/li>\n<\/ul>\n<p>Die L\u00f6sung zu dieser \u00dcbungsaufgabe gibt es im neuen Buch<a href=\"https:\/\/amzn.to\/3MLBUb8\"> Statistik mit R &amp; RStudio<\/a>.<\/p>\n<p><a href=\"https:\/\/amzn.to\/3MLBUb8\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1822\" src=\"http:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz3.png\" alt=\"\" width=\"900\" height=\"577\" srcset=\"https:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz3.png 900w, https:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz3-300x192.png 300w, https:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz3-768x492.png 768w, https:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz3-65x42.png 65w, https:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz3-225x144.png 225w, https:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz3-350x224.png 350w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<\/div>\n<div id=\"variablentypen\" class=\"section level2 hasAnchor\">\n<h1>Variablentypen<\/h1>\n<p>Variablen k\u00f6nnen einen unterschiedlichen Typen haben. Die Wichtigsten sind:<\/p>\n<ul>\n<li>Numerische Variablen sind Variablen, die numerische Werte enthalten, wie z. B. Ganzzahlen oder Gleitkommazahlen. Diese Variablen k\u00f6nnen zur Durchf\u00fchrung von Berechnungen und statistischen Analysen verwendet werden.<\/li>\n<li>Character Variablen sind Variablen, die Zeichenwerte (d.\u00a0h. Text) enthalten. Diese Variablen k\u00f6nnen zum Speichern von Namen, Beschriftungen und anderen Arten von nicht-numerischen Daten verwendet werden.<\/li>\n<li>Faktoren sind Variablen, die eine begrenzte Anzahl von Werten annehmen k\u00f6nnen, die als Ebenen bezeichnet werden. Faktoren werden verwendet, um kategorische Daten darzustellen, wie z. B. Geschlecht oder Augenfarbe.<\/li>\n<\/ul>\n<p>Viele Analysen brauchen den richtigen Typ, um zu funktionieren. Beispielsweise muss eine Variable, die die Zugeh\u00f6rigkeit zu einer Gruppe numerisch angibt, vom Typ \u201cfactor\u201d sein.<\/p>\n<p>Schauen wir uns zun\u00e4chst den Variablentyp mit der <em>class()<\/em> Funktion an.<\/p>\n<div id=\"cb10\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb10-1\"><span class=\"fu\">class<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb10-2\"><span class=\"do\">## [1] \"numeric\"<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Diese Variable sollte eigentlich ein Faktor sein. Nun \u00e4ndern wir auf den korrekten Variablen-Typ:<\/p>\n<div id=\"cb11\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb11-1\">GruppenNr <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">factor<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb11-2\"><span class=\"fu\">class<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb11-3\"><span class=\"do\">## [1] \"factor\"<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Schauen Sie sich nun auch den Variableninhalt nochmal an:<\/p>\n<div id=\"cb12\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb12-1\">GruppenNr<\/span>\r\n<span id=\"cb12-2\"><span class=\"do\">##  [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5<\/span><\/span>\r\n<span id=\"cb12-3\"><span class=\"do\">## Levels: 1 2 3 4 5<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Wie Sie sehen, werden nun unter den Werten die Faktorstufen (sog. Levels) mit angegeben, also die Auspr\u00e4gungen, die in den Daten vorkommen. Wir k\u00f6nnen den Faktorstufen auch Labels geben (anders als in SPSS werden diese dann auch als Werte angezeigt). Dies geht mit dem zus\u00e4tzlichen Befehl <em>labels<\/em>.<\/p>\n<div id=\"cb13\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb13-1\">GruppenNr <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">factor<\/span>(GruppenNr,             <span class=\"at\">labels=<\/span><span class=\"fu\">c<\/span>(<span class=\"st\">\"Gruppe1\"<\/span>,<span class=\"st\">\"Gruppe2\"<\/span>,<span class=\"st\">\"Gruppe3\"<\/span>,<span class=\"st\">\"Gruppe4\"<\/span>,<span class=\"st\">\"Gruppe5\"<\/span>))<\/span><\/code><\/pre>\n<\/div>\n<p>Schauen Sie sich nun auch den Variableninhalt nochmal an:<\/p>\n<div id=\"cb14\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb14-1\">GruppenNr<\/span>\r\n<span id=\"cb14-2\"><span class=\"do\">##  [1] Gruppe1 Gruppe1 Gruppe1 Gruppe2 Gruppe2 Gruppe2 Gruppe3 Gruppe3<\/span><\/span>\r\n<span id=\"cb14-3\"><span class=\"do\">##  [9] Gruppe3 Gruppe4 Gruppe4 Gruppe4 Gruppe5 Gruppe5 Gruppe5<\/span><\/span>\r\n<span id=\"cb14-4\"><span class=\"do\">## Levels: Gruppe1 Gruppe2 Gruppe3 Gruppe4 Gruppe5<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Um die Anzahl der Eintr\u00e4ge einer Variable zu sehen, benutzt man die <em>length()<\/em> Funktion:<\/p>\n<div id=\"cb15\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb15-1\"><span class=\"fu\">length<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb15-2\"><span class=\"do\">## [1] 15<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Die Faktorstufen eines Faktors erh\u00e4lt man mit levels():<\/p>\n<div id=\"cb16\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb16-1\"><span class=\"fu\">levels<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb16-2\"><span class=\"do\">## [1] \"Gruppe1\" \"Gruppe2\" \"Gruppe3\" \"Gruppe4\" \"Gruppe5\"<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Eine kurze Zusammenfassung einer Variablen mit den wichtigsten deskriptiven Statistiken gibt die <em>summary()<\/em> Funktion, deren Ausgabe sich danach unterscheidet, von welchem Typ die Variable ist:<\/p>\n<p>Mit Faktor wird eine H\u00e4ufigkeitstabelle ausgegeben:<\/p>\n<div id=\"cb17\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb17-1\"><span class=\"fu\">summary<\/span>(GruppenNr)<\/span>\r\n<span id=\"cb17-2\"><span class=\"do\">## Gruppe1 Gruppe2 Gruppe3 Gruppe4 Gruppe5 <\/span><\/span>\r\n<span id=\"cb17-3\"><span class=\"do\">##       3       3       3       3       3<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Mit numerischer Variable wird das Minimum, das erste Quartil, der Median, der Mittelwert, das dritte Quartil und der H\u00f6chstwert f\u00fcr die Variable ausgegeben:<\/p>\n<div id=\"cb18\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb18-1\"><span class=\"fu\">summary<\/span>(ID2)<\/span>\r\n<span id=\"cb18-2\"><span class=\"do\">##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. <\/span><\/span>\r\n<span id=\"cb18-3\"><span class=\"do\">##    -1.0     2.5     6.0     6.0     9.5    13.0<\/span><\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<div id=\"datens\u00e4tze-dataframes-erzeugen\" class=\"section level2 hasAnchor\">\n<h1>Datens\u00e4tze (Dataframes) erzeugen<\/h1>\n<p>In der Programmiersprache R ist ein Dataframe eine Tabelle mit Daten, die in Zeilen und Spalten organisiert ist. Dataframes sind wichtig, weil sie es erm\u00f6glichen, gro\u00dfe Datenmengen strukturiert und \u00fcbersichtlich zu speichern und zu bearbeiten. Sie sind eine grundlegende Datenstruktur in R und werden h\u00e4ufig in der statistischen Analyse, Datenmanipulation und Datenvisualisierung verwendet.<\/p>\n<p>Dataframes haben mehrere Vorteile gegen\u00fcber anderen Datenstrukturen in R, wie z. B. Matrizen und Listen. Zum Beispiel k\u00f6nnen Dataframes Daten verschiedener Typen (z. B. numerisch, zeichenweise, logisch) in derselben Tabelle speichern, w\u00e4hrend Matrizen nur Daten eines einzigen Typs speichern k\u00f6nnen. Dataframes verf\u00fcgen au\u00dferdem \u00fcber eine Vielzahl von Funktionen und Methoden zur Manipulation und Analyse der Daten, was sie zu einem leistungsstarken und flexiblen Werkzeug f\u00fcr die Arbeit mit Daten in R macht.<\/p>\n<p>Wir erzeugen nun aus den eben erstellten Variablen einen Dataframe. Achten Sie darauf, dass alle drei Variablen (ID, ID2 und GruppenNr) auch in Ihrem \u201cGlobal Environment\u201d (Kasten rechts oben) sind, sonst erhalten Sie eine Fehlermeldung.<\/p>\n<div id=\"cb19\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb19-1\">Datensatz <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">data.frame<\/span>(<span class=\"at\">ID =<\/span> ID,<span class=\"at\">ID2 =<\/span> ID2,<span class=\"at\">GruppenNr =<\/span> GruppenNr)<\/span><\/code><\/pre>\n<\/div>\n<p>Nun haben wir einen kleinen Datensatz mit 15 Personen, die in f\u00fcnf Dreiergruppen getestet wurden. Wir k\u00f6nnen nun noch das Geschlecht als Variable erg\u00e4nzen. Die Notation f\u00fcr eine Variable in einem Datensatz ist dabei immer <em>Datensatz$Variable<\/em><\/p>\n<div id=\"cb20\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb20-1\">Datensatz<span class=\"sc\">$<\/span>Geschlecht <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">c<\/span>(<span class=\"st\">\"w\"<\/span>, <span class=\"fu\">rep<\/span>(<span class=\"fu\">c<\/span>(<span class=\"st\">\"w\"<\/span>, <span class=\"st\">\"m\"<\/span>), <span class=\"at\">times =<\/span> <span class=\"dv\">7<\/span>))<\/span><\/code><\/pre>\n<\/div>\n<p>Jetzt w\u00fcrden wir normalerweise noch weitere Daten erg\u00e4nzen, wir k\u00f6nnen aber auch R bitten, f\u00fcr uns Zufallszahlen zu generieren, mit denen wir arbeiten k\u00f6nnen. Dazu nutzen wir die <em>rnorm<\/em> Funktion, um normierte Zufallszahlen zu generieren.<\/p>\n<div id=\"cb21\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb21-1\">Datensatz<span class=\"sc\">$<\/span>Messwert <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">rnorm<\/span>(<span class=\"dv\">15<\/span>)<\/span><\/code><\/pre>\n<\/div>\n<p>Nun k\u00f6nnen wir uns den fertigen Datensatz ansehen:<\/p>\n<div id=\"cb22\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb22-1\">Datensatz<\/span><\/code><\/pre>\n<\/div>\n<p>Alternativ k\u00f6nnen wir uns den Datensatz auch als eigene Tabelle (vergleichbar Excel oder SPSS) anzeigen lassen:<\/p>\n<div id=\"cb23\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb23-1\"><span class=\"fu\">View<\/span>(Datensatz)<\/span><\/code><\/pre>\n<\/div>\n<p>Hier sieht alles schon sehr gewohnt aus (zumindest wenn man Excel oder SPSS gewohnt ist), man kann jedoch nichts bearbeiten. Hierf\u00fcr gibt es in R jedoch den Dateneditor, den man mit edit() oder fix() startet. <em>fix<\/em> speichert die \u00c4nderungen automatisch. Bei <em>edit<\/em> muss man die \u00c4nderungen einem Objekt zuweisen.<\/p>\n<div id=\"cb24\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb24-1\"><span class=\"fu\">fix<\/span>(Datensatz)<\/span><\/code><\/pre>\n<\/div>\n<p>Sie k\u00f6nnen eine Variable in einem Datensatz auch jederzeit l\u00f6schen:<\/p>\n<div id=\"cb25\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb25-1\">Datensatz<span class=\"sc\">$<\/span>ID2 <span class=\"ot\">&lt;-<\/span> <span class=\"cn\">NULL<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Die Variablen liegen jetzt noch doppelt im Speicher: einmal im Datensatz und einmal einzeln. Die einzelnen Variablen k\u00f6nnen wir nun auch l\u00f6schen, wenn Sie es ordentlich m\u00f6gen.<\/p>\n<div id=\"cb26\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb26-1\"><span class=\"fu\">rm<\/span>(ID, ID2, GruppenNr) <\/span><\/code><\/pre>\n<\/div>\n<p>Wenn Sie einen neuen Datensatz erzeugt oder importiert haben, sollten Sie sich erst eine \u00dcbersicht \u00fcber die Struktur des Objektes machen. Hier hilft Ihnen die <em>str<\/em> Funktion. Wenn Sie str() f\u00fcr ein Objekt aufrufen, wird eine Zusammenfassung des Objektinhalts zur\u00fcckgegeben, einschlie\u00dflich der Klasse des Objekts, der L\u00e4nge des Objekts und der Namen und Abmessungen aller Komponenten des Objekts (z. B. Elemente einer Liste, Spalten eines Dataframes).<\/p>\n<div id=\"cb27\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb27-1\"><span class=\"fu\">str<\/span>(Datensatz)<\/span>\r\n<span id=\"cb27-2\"><span class=\"do\">## 'data.frame':    15 obs. of  4 variables:<\/span><\/span>\r\n<span id=\"cb27-3\"><span class=\"do\">##  $ ID        : num  1 2 3 4 5 6 7 8 9 10 ...<\/span><\/span>\r\n<span id=\"cb27-4\"><span class=\"do\">##  $ GruppenNr : Factor w\/ 5 levels \"Gruppe1\",\"Gruppe2\",..: 1 1 1 2 2 2 3 3 3 4 ...<\/span><\/span>\r\n<span id=\"cb27-5\"><span class=\"do\">##  $ Geschlecht: chr  \"w\" \"w\" \"m\" \"w\" ...<\/span><\/span>\r\n<span id=\"cb27-6\"><span class=\"do\">##  $ Messwert  : num  1.3598 0.6062 -0.0418 0.1445 0.4705 ...<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>In diesem Video zeige ich, wie das in R funktioniert:<\/p>\n<div class=\"vembedr\" style=\"margin: auto;\">\n<div><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/FLQ5FvZkmcs\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<div id=\"umgang-mit-datens\u00e4tzen\" class=\"section level2 hasAnchor\">\n<h1>Umgang mit Datens\u00e4tzen<\/h1>\n<p>Datens\u00e4tze bestehen aus Zeilen (F\u00e4llen) und Spalten (Variablen). Mit der sog. Index-Notation in eckiger Klammer k\u00f6nnen einzelne Elemente (also eine Variable oder ein Wert) in einem Datensatz ausgew\u00e4hlt werden. Zeilen und Spalten eines Datensatzes k\u00f6nnen dabei wie folgt ausgelesen werden:<\/p>\n<ol style=\"list-style-type: decimal;\">\n<li>Zeile:<\/li>\n<\/ol>\n<div id=\"cb28\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb28-1\">Datensatz[<span class=\"dv\">1<\/span>,]<\/span>\r\n<span id=\"cb28-2\"><span class=\"do\">##   ID GruppenNr Geschlecht Messwert<\/span><\/span>\r\n<span id=\"cb28-3\"><span class=\"do\">## 1  1   Gruppe1          w 1.359812<\/span><\/span><\/code><\/pre>\n<\/div>\n<ol style=\"list-style-type: decimal;\">\n<li>Spalte:<\/li>\n<\/ol>\n<div id=\"cb29\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb29-1\">Datensatz[,<span class=\"dv\">1<\/span>]<\/span>\r\n<span id=\"cb29-2\"><span class=\"do\">##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Wert der 1. Zeile in der 1. Spalte:<\/p>\n<div id=\"cb30\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb30-1\">Datensatz[<span class=\"dv\">1<\/span>,<span class=\"dv\">1<\/span>]<\/span>\r\n<span id=\"cb30-2\"><span class=\"do\">## [1] 1<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>F\u00e4lle 1, 3 und 5:<\/p>\n<div id=\"cb31\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb31-1\">Datensatz[<span class=\"fu\">c<\/span>(<span class=\"dv\">1<\/span>,<span class=\"dv\">3<\/span>,<span class=\"dv\">5<\/span>),]<\/span>\r\n<span id=\"cb31-2\"><span class=\"do\">##   ID GruppenNr Geschlecht    Messwert<\/span><\/span>\r\n<span id=\"cb31-3\"><span class=\"do\">## 1  1   Gruppe1          w  1.35981250<\/span><\/span>\r\n<span id=\"cb31-4\"><span class=\"do\">## 3  3   Gruppe1          m -0.04182047<\/span><\/span>\r\n<span id=\"cb31-5\"><span class=\"do\">## 5  5   Gruppe2          m  0.47045845<\/span><\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<div id=\"datens\u00e4tze-sortieren\" class=\"section level2 hasAnchor\">\n<h2>Datens\u00e4tze sortieren<\/h2>\n<p>Datensatz nach der Variable Messwert aufsteigend sortiert anzeigen:<\/p>\n<div id=\"cb32\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb32-1\">Datensatz[<span class=\"fu\">order<\/span>(Datensatz<span class=\"sc\">$<\/span>Messwert),]<\/span>\r\n<span id=\"cb32-2\"><span class=\"do\">##    ID GruppenNr Geschlecht    Messwert<\/span><\/span>\r\n<span id=\"cb32-3\"><span class=\"do\">## 8   8   Gruppe3          w -1.32590662<\/span><\/span>\r\n<span id=\"cb32-4\"><span class=\"do\">## 11 11   Gruppe4          m -0.28081031<\/span><\/span>\r\n<span id=\"cb32-5\"><span class=\"do\">## 3   3   Gruppe1          m -0.04182047<\/span><\/span>\r\n<span id=\"cb32-6\"><span class=\"do\">## 7   7   Gruppe3          m  0.06276210<\/span><\/span>\r\n<span id=\"cb32-7\"><span class=\"do\">## 14 14   Gruppe5          w  0.08925779<\/span><\/span>\r\n<span id=\"cb32-8\"><span class=\"do\">## 4   4   Gruppe2          w  0.14447396<\/span><\/span>\r\n<span id=\"cb32-9\"><span class=\"do\">## 9   9   Gruppe3          m  0.22214144<\/span><\/span>\r\n<span id=\"cb32-10\"><span class=\"do\">## 5   5   Gruppe2          m  0.47045845<\/span><\/span>\r\n<span id=\"cb32-11\"><span class=\"do\">## 2   2   Gruppe1          w  0.60618251<\/span><\/span>\r\n<span id=\"cb32-12\"><span class=\"do\">## 10 10   Gruppe4          w  0.66741066<\/span><\/span>\r\n<span id=\"cb32-13\"><span class=\"do\">## 13 13   Gruppe5          m  1.28546663<\/span><\/span>\r\n<span id=\"cb32-14\"><span class=\"do\">## 1   1   Gruppe1          w  1.35981250<\/span><\/span>\r\n<span id=\"cb32-15\"><span class=\"do\">## 15 15   Gruppe5          m  1.57101525<\/span><\/span>\r\n<span id=\"cb32-16\"><span class=\"do\">## 12 12   Gruppe4          w  1.67051430<\/span><\/span>\r\n<span id=\"cb32-17\"><span class=\"do\">## 6   6   Gruppe2          w  2.12952399<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Dies ver\u00e4ndert den Datensatz jedoch nicht dauerhaft. Wenn Sie sich den Datensatz jetzt noch mal neu anschauen sehen Sie, dass die Spalten nach wie vor gleich sortiert sind.<\/p>\n<p>Erst wenn man den Datensatz mit dem neu sortierten Datensatz \u00fcberschreibt, ver\u00e4ndert dieser sich dauerhaft:<\/p>\n<div id=\"cb33\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb33-1\">Datensatz <span class=\"ot\">&lt;-<\/span> Datensatz[<span class=\"fu\">order<\/span>(Datensatz<span class=\"sc\">$<\/span>Messwert),]<\/span>\r\n<span id=\"cb33-2\">Datensatz<\/span>\r\n<span id=\"cb33-3\"><span class=\"do\">##    ID GruppenNr Geschlecht    Messwert<\/span><\/span>\r\n<span id=\"cb33-4\"><span class=\"do\">## 8   8   Gruppe3          w -1.32590662<\/span><\/span>\r\n<span id=\"cb33-5\"><span class=\"do\">## 11 11   Gruppe4          m -0.28081031<\/span><\/span>\r\n<span id=\"cb33-6\"><span class=\"do\">## 3   3   Gruppe1          m -0.04182047<\/span><\/span>\r\n<span id=\"cb33-7\"><span class=\"do\">## 7   7   Gruppe3          m  0.06276210<\/span><\/span>\r\n<span id=\"cb33-8\"><span class=\"do\">## 14 14   Gruppe5          w  0.08925779<\/span><\/span>\r\n<span id=\"cb33-9\"><span class=\"do\">## 4   4   Gruppe2          w  0.14447396<\/span><\/span>\r\n<span id=\"cb33-10\"><span class=\"do\">## 9   9   Gruppe3          m  0.22214144<\/span><\/span>\r\n<span id=\"cb33-11\"><span class=\"do\">## 5   5   Gruppe2          m  0.47045845<\/span><\/span>\r\n<span id=\"cb33-12\"><span class=\"do\">## 2   2   Gruppe1          w  0.60618251<\/span><\/span>\r\n<span id=\"cb33-13\"><span class=\"do\">## 10 10   Gruppe4          w  0.66741066<\/span><\/span>\r\n<span id=\"cb33-14\"><span class=\"do\">## 13 13   Gruppe5          m  1.28546663<\/span><\/span>\r\n<span id=\"cb33-15\"><span class=\"do\">## 1   1   Gruppe1          w  1.35981250<\/span><\/span>\r\n<span id=\"cb33-16\"><span class=\"do\">## 15 15   Gruppe5          m  1.57101525<\/span><\/span>\r\n<span id=\"cb33-17\"><span class=\"do\">## 12 12   Gruppe4          w  1.67051430<\/span><\/span>\r\n<span id=\"cb33-18\"><span class=\"do\">## 6   6   Gruppe2          w  2.12952399<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Wir sortieren ihn wieder zur\u00fcck:<\/p>\n<div id=\"cb34\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb34-1\">Datensatz <span class=\"ot\">&lt;-<\/span> Datensatz[<span class=\"fu\">order<\/span>(Datensatz<span class=\"sc\">$<\/span>ID),]<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<div id=\"umgang-mit-datens\u00e4tzen-fallauswahl\" class=\"section level2 hasAnchor\">\n<h1>Umgang mit Datens\u00e4tzen: Fallauswahl<\/h1>\n<p>R verf\u00fcgt \u00fcber eine breite Palette von Operatoren zur Durchf\u00fchrung von Operationen mit Objekten wie Vektoren, Matrizen und Datenrahmen. Im Folgenden finden Sie eine Liste der wichtigsten Operatoren in R:<\/p>\n<ol style=\"list-style-type: decimal;\">\n<li>Arithmetische Operatoren: Diese Operatoren f\u00fchren grundlegende arithmetische Operationen durch, wie z. B. Addition (+), Subtraktion (-), Multiplikation (*) und Division (\/). Sie k\u00f6nnen verwendet werden, um Berechnungen mit numerischen Objekten, wie Vektoren und Matrizen, durchzuf\u00fchren.<\/li>\n<li>Vergleichsoperatoren: Diese Operatoren vergleichen zwei Objekte und geben einen logischen Wert (TRUE oder FALSE) zur\u00fcck. Zu den Vergleichsoperatoren in R geh\u00f6ren gleich (==), nicht gleich (!=), kleiner als (&lt;), gr\u00f6\u00dfer als (&gt;), kleiner oder gleich (&lt;=) und gr\u00f6\u00dfer oder gleich (&gt;=).<\/li>\n<li>Logische Operatoren: Diese Operatoren f\u00fchren logische Operationen mit logischen Objekten durch (d.\u00a0h. TRUE oder FALSE). Zu den logischen Operatoren in R geh\u00f6ren und (&amp;&amp;), oder (||) und nicht (!).<\/li>\n<\/ol>\n<p>Mit den letzen beiden Arten von Operatoren wollen wir uns nun kurz auseinandersetzen. Die Operatoren == (ist gleich), != (ungleich), &gt;=, (gr\u00f6sser gleich), &lt;= (kleiner gleich) sowie | (oder) und &amp; (und) vergleichen JEDEN Wert einer Variable mit dem Vergleichsobjekt und liefern f\u00fcr jeden Vergleich TRUE oder FALSE zur\u00fcck. Machen wir ein einfaches Beispiel.<\/p>\n<p>Alle weiblichen:<\/p>\n<div id=\"cb35\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb35-1\">Datensatz<span class=\"sc\">$<\/span>Geschlecht <span class=\"sc\">==<\/span> <span class=\"st\">\"w\"<\/span><\/span>\r\n<span id=\"cb35-2\"><span class=\"do\">##  [1]  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE<\/span><\/span>\r\n<span id=\"cb35-3\"><span class=\"do\">## [11] FALSE  TRUE FALSE  TRUE FALSE<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Alle nicht m\u00e4nnlichen:<\/p>\n<div id=\"cb36\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb36-1\">Datensatz<span class=\"sc\">$<\/span>Geschlecht <span class=\"sc\">!=<\/span> <span class=\"st\">\"m\"<\/span><\/span>\r\n<span id=\"cb36-2\"><span class=\"do\">##  [1]  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE<\/span><\/span>\r\n<span id=\"cb36-3\"><span class=\"do\">## [11] FALSE  TRUE FALSE  TRUE FALSE<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Das ist sehr n\u00fctzlich, weil man so F\u00e4lle anderer Variablen ausw\u00e4hlen kann, die eine Bedingung erf\u00fcllen. Zum Beispiel alle F\u00e4lle von Variable A, bei denen das Geschlecht \u201cw\u201d ist:<\/p>\n<div id=\"cb37\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb37-1\">Datensatz<span class=\"sc\">$<\/span>Messwert[Datensatz<span class=\"sc\">$<\/span>Geschlecht <span class=\"sc\">==<\/span> <span class=\"st\">\"w\"<\/span>]<\/span>\r\n<span id=\"cb37-2\"><span class=\"do\">## [1]  1.35981250  0.60618251  0.14447396  2.12952399 -1.32590662<\/span><\/span>\r\n<span id=\"cb37-3\"><span class=\"do\">## [6]  0.66741066  1.67051430  0.08925779<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>oder Sie k\u00f6nnen den Mittelwert der weiblichen Personen in einer neuen Variable speichern:<\/p>\n<div id=\"cb38\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb38-1\">x <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">mean<\/span>(Datensatz<span class=\"sc\">$<\/span>Messwert[Datensatz<span class=\"sc\">$<\/span>Geschlecht <span class=\"sc\">==<\/span> <span class=\"st\">\"m\"<\/span>])<\/span>\r\n<span id=\"cb38-2\">x<\/span>\r\n<span id=\"cb38-3\"><span class=\"do\">## [1] 0.4698876<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Diese beiden Ausdr\u00fccke k\u00f6nnte man bspw. mit einem t-Test vergleichen<br \/>\n(dazu sp\u00e4ter mehr).<\/p>\n<p>In diesem Video zeige ich, wie das in R funktioniert:<\/p>\n<div class=\"vembedr\" style=\"margin: auto;\">\n<div><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/6dwVssrKFKw\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<div id=\"\u00fcbung-1\" class=\"section level2 hasAnchor\">\n<h1>\u00dcbung<\/h1>\n<ul>\n<li>W\u00e4hlen Sie die Variable \u201cMesswert\u201d aus dem Datensatz aus. Verwenden Sie daf\u00fcr einmal die Dollar-Notation($) und einmal die Index-Notation (eckige Klammern)<\/li>\n<li>Lassen Sie sich den Messwert f\u00fcr die Person mit ID = 9 ausgeben.<\/li>\n<li>Lassen Sie sich die Messwerte f\u00fcr alle Personen der Gruppe 3 ausgeben<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Die L\u00f6sung zu dieser \u00dcbungsaufgabe gibt es im neuen Buch<a href=\"https:\/\/amzn.to\/3MLBUb8\"> Statistik mit R &amp; RStudio<\/a>.<\/p>\n<p><a href=\"https:\/\/amzn.to\/3MLBUb8\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1822\" src=\"http:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz1.png\" alt=\"\" width=\"900\" height=\"577\" \/><\/a><\/p>\n<\/div>\n<div id=\"datens\u00e4tze-im-long--und-im-wide-format\" class=\"section level2 hasAnchor\">\n<h1>Datens\u00e4tze im Long- und im Wide-Format<\/h1>\n<p>Grunds\u00e4tzlich k\u00f6nnen Daten im \u201cWide\u201d und im \u201cLong\u201d Format vorliegen. R kann gunds\u00e4tzlich mit beidem arbeiten (anders als SPSS), jedoch verlangen bestimmte R Funktionen, dass die Daten in einem bestimmten Format vorliegen. Wir m\u00fcssen sie daher transformieren.<\/p>\n<p>Die Daten in \u2018Datensatz\u2019 liegen im Wide-Format vor, d.\u00a0h. jede Variable hat eine neue Spalte (wie in SPSS)<\/p>\n<p>Nehmen wir z. B. an, wir messen die Klausurnote in Statistik von 6 Studierenden ohne Tutorium (Gruppe 1) und 6 Studierenden mit Tutorium (Gruppe 2), um festzustellen, ob das Tutorium sich positiv auf die Note auswirkt<\/p>\n<p>Die Daten liegen wie folgt vor:<\/p>\n<div id=\"cb39\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb39-1\">Gruppe1 <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">c<\/span>(<span class=\"fl\">2.2<\/span>,<span class=\"fl\">1.7<\/span>,<span class=\"fl\">3.3<\/span>,<span class=\"fl\">2.3<\/span>,<span class=\"fl\">1.7<\/span>,<span class=\"dv\">2<\/span>)<\/span>\r\n<span id=\"cb39-2\">Gruppe2 <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">c<\/span>(<span class=\"fl\">2.7<\/span>,<span class=\"fl\">1.7<\/span>,<span class=\"dv\">2<\/span>,<span class=\"fl\">3.3<\/span>,<span class=\"fl\">1.7<\/span>,<span class=\"dv\">2<\/span>)<\/span>\r\n<span id=\"cb39-3\">Noten <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">data.frame<\/span>(Gruppe1,Gruppe2)<\/span><\/code><\/pre>\n<\/div>\n<p>Schauen wir uns die Daten zun\u00e4chst an (diese sind im Wide-Format)<\/p>\n<div id=\"cb40\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb40-1\">Noten<\/span>\r\n<span id=\"cb40-2\"><span class=\"do\">##   Gruppe1 Gruppe2<\/span><\/span>\r\n<span id=\"cb40-3\"><span class=\"do\">## 1     2.2     2.7<\/span><\/span>\r\n<span id=\"cb40-4\"><span class=\"do\">## 2     1.7     1.7<\/span><\/span>\r\n<span id=\"cb40-5\"><span class=\"do\">## 3     3.3     2.0<\/span><\/span>\r\n<span id=\"cb40-6\"><span class=\"do\">## 4     2.3     3.3<\/span><\/span>\r\n<span id=\"cb40-7\"><span class=\"do\">## 5     1.7     1.7<\/span><\/span>\r\n<span id=\"cb40-8\"><span class=\"do\">## 6     2.0     2.0<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Jetzt wandeln wir die Daten in das Long-Format um. Hierzu nutzen wir die <em>stack<\/em> Funktion.<\/p>\n<div id=\"cb41\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb41-1\">Noten.Long<span class=\"ot\">&lt;-<\/span><span class=\"fu\">stack<\/span>(Noten)<\/span>\r\n<span id=\"cb41-2\">Noten.Long<\/span>\r\n<span id=\"cb41-3\"><span class=\"do\">##    values     ind<\/span><\/span>\r\n<span id=\"cb41-4\"><span class=\"do\">## 1     2.2 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-5\"><span class=\"do\">## 2     1.7 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-6\"><span class=\"do\">## 3     3.3 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-7\"><span class=\"do\">## 4     2.3 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-8\"><span class=\"do\">## 5     1.7 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-9\"><span class=\"do\">## 6     2.0 Gruppe1<\/span><\/span>\r\n<span id=\"cb41-10\"><span class=\"do\">## 7     2.7 Gruppe2<\/span><\/span>\r\n<span id=\"cb41-11\"><span class=\"do\">## 8     1.7 Gruppe2<\/span><\/span>\r\n<span id=\"cb41-12\"><span class=\"do\">## 9     2.0 Gruppe2<\/span><\/span>\r\n<span id=\"cb41-13\"><span class=\"do\">## 10    3.3 Gruppe2<\/span><\/span>\r\n<span id=\"cb41-14\"><span class=\"do\">## 11    1.7 Gruppe2<\/span><\/span>\r\n<span id=\"cb41-15\"><span class=\"do\">## 12    2.0 Gruppe2<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Das ganze geht nat\u00fcrlich auch umgekehrt, dazu nutzen wir die <em>unstack<\/em> Funktion:<\/p>\n<div id=\"cb42\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb42-1\">Noten2<span class=\"ot\">&lt;-<\/span><span class=\"fu\">unstack<\/span>(Noten.Long)<\/span>\r\n<span id=\"cb42-2\">Noten2<\/span>\r\n<span id=\"cb42-3\"><span class=\"do\">##   Gruppe1 Gruppe2<\/span><\/span>\r\n<span id=\"cb42-4\"><span class=\"do\">## 1     2.2     2.7<\/span><\/span>\r\n<span id=\"cb42-5\"><span class=\"do\">## 2     1.7     1.7<\/span><\/span>\r\n<span id=\"cb42-6\"><span class=\"do\">## 3     3.3     2.0<\/span><\/span>\r\n<span id=\"cb42-7\"><span class=\"do\">## 4     2.3     3.3<\/span><\/span>\r\n<span id=\"cb42-8\"><span class=\"do\">## 5     1.7     1.7<\/span><\/span>\r\n<span id=\"cb42-9\"><span class=\"do\">## 6     2.0     2.0<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>\u2018Noten2\u2019 ist nun wieder im Wide-Format also gleich dem Ursprungs-Datensatz \u2018Noten\u2019<\/p>\n<p>In diesem Video zeige ich, wie das in R funktioniert:<\/p>\n<div class=\"vembedr\" style=\"margin: auto;\">\n<div><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/gOJf_e2nzLc\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<div id=\"datens\u00e4tze-als-csv-speichern-und-laden\" class=\"section level2 hasAnchor\">\n<h1>Datens\u00e4tze als csv speichern und laden<\/h1>\n<p>Wenn man den Arbeitsbereich wie zuvor beschrieben speichert (Workspace -&gt; Save Workspace As\u2026), werden auch alle im Arbeitsbereich enthaltenen Datens\u00e4tze gespeichert.<\/p>\n<p>Man kann Datens\u00e4tze auch als einzelne Datei abspeichern, um sie mit anderen Programmen, z. B. Excel oder SPSS, zu \u00f6ffnen. Grunds\u00e4tzlich sollten Sie alle Daten, die Sie sp\u00e4ter noch ben\u00f6tigen, als eigene Datendatei speichern.<\/p>\n<p>R speichert Datens\u00e4tze als Textdateien, als tab-delimited (tabulator-getrennt) oder als csv-Datei (comma separated value). Leider gibt es unterschiedliche .csv Formate. Dies liegt daran, dass eine Trennung durch ein Komma im Deutschen zu Verwirrungen f\u00fchren w\u00fcrde (Ist 2,2 nun eine Zahl oder zwei durch Komma getrennte Zahlen?). Daher nutzen wir in Deutschland ein csv-Format, dass Werte durch Strichpunkt abtrennt. Nur dieses k\u00f6nnen Sie mit einem auf Deutsch eingestellten Excel-Programm auch wieder \u00f6ffen. Um eine solche Datei zu erzeugen, verwendet man den Befehl <em>write.csv2()<\/em>.<\/p>\n<div id=\"cb43\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb43-1\"><span class=\"fu\">write.csv2<\/span>(Datensatz, <span class=\"at\">file =<\/span> <span class=\"st\">\"Datensatz.csv\"<\/span>, <span class=\"at\">row.names =<\/span> <span class=\"cn\">FALSE<\/span>)<\/span><\/code><\/pre>\n<\/div>\n<p>Um die Datei dann wieder zu laden, geht man wie folgt vor:<\/p>\n<div id=\"cb44\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb44-1\">Datensatz <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">read.csv2<\/span>(<span class=\"st\">\"Datensatz.csv\"<\/span>)<\/span><\/code><\/pre>\n<\/div>\n<p>In diesem Video zeige ich, wie das in R funktioniert:<\/p>\n<div class=\"vembedr\" style=\"margin: auto;\">\n<div><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/L-ZOdjz4po4\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<div id=\"spss-datens\u00e4tze-einlesen\" class=\"section level2 hasAnchor\">\n<h1>SPSS Datens\u00e4tze einlesen<\/h1>\n<p>R ben\u00f6tigt eine Erweiterung, um SPSS-Daten einlesen zu k\u00f6nnen. H\u00e4ufig verwendete Pakete, mit dem R SPSS-Dateien lesen kann, sind \u2018foreign\u2019 und \u2018haven\u2019. Beide sind bereits in der R-Installation vorhanden. Wenn Sie in R-Studio \u00fcber das Men\u00fc \u201cImport Dataset\u201d SPSS ausw\u00e4hlen, nutzen Sie das \u2018haven\u2019 Paket.<\/p>\n<p>SPSS-Datensatz \u2018WPStudi.sav\u2019 mit Paket <em>haven<\/em> importieren (alternativ \u00fcber Men\u00fc):<\/p>\n<div id=\"cb45\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb45-1\"><span class=\"fu\">library<\/span>(haven)<\/span>\r\n<span id=\"cb45-2\">WPStudis_mit_haven <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">read_sav<\/span>(<span class=\"st\">\"WPStudis.sav\"<\/span>)<\/span><\/code><\/pre>\n<\/div>\n<p>Betrachten Sie die Daten. Nutzen Sie dazu die Befehle <em>View()<\/em> bzw. <em>str()<\/em>.<\/p>\n<p>Wir wiederholen den Import mit dem Paket <em>foreign<\/em><\/p>\n<div id=\"cb46\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb46-1\"><span class=\"fu\">library<\/span>(foreign)<\/span>\r\n<span id=\"cb46-2\">WPStudis_mit_foreign <span class=\"ot\">&lt;-<\/span> <span class=\"fu\">read.spss<\/span>(<span class=\"at\">file=<\/span><span class=\"st\">\"WPStudis.sav\"<\/span>, <span class=\"at\">to.data.frame =<\/span> T)<\/span><\/code><\/pre>\n<\/div>\n<p>Betrachten Sie die Daten wieder mit <em>View<\/em> bzw. <em>str<\/em>.<\/p>\n<p>Haben Sie die Unterschiede bemerkt? Achten Sie z. B. auf die Variable Geschlecht. <em>Haven<\/em> erzeugt belabelte Vektoren, bei denen die Faktorstufen numerisch sind (z. B. \u201c0\u201d f\u00fcr weiblich), w\u00e4hrend <em>foreign<\/em> Faktoren mit den Labels als Faktorstufen erzeugt. Dies ist zwar besser, jedoch wird im <em>foreign<\/em> Paket z. B. die Variable <em>Alter<\/em> als Faktor erzeugt (sollte numerisch sein). In Summe haben alle Importfunktionen von SPSS ihre St\u00e4rken und Schw\u00e4chen. Sie sollten daher grunds\u00e4tzlich den importierten Datensatz nochmal von Hand pr\u00fcfen und korrigieren.<\/p>\n<p>In diesem Video zeige ich, wie das in R funktioniert:<\/p>\n<div class=\"vembedr\" style=\"margin: auto;\">\n<div><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/siqk8BssV8U\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<div id=\"datenmanagement-mit-tidyverse\" class=\"section level2 hasAnchor\">\n<h1>Datenmanagement mit Tidyverse<\/h1>\n<p>Alternativ zu den bisher besprochenen Methoden k\u00f6nnen Datens\u00e4tze oft auch bequemer mit Funktionen aus der <em>tidyverse<\/em> Familie bearbeitet werden. Zentral ist hierbei die standardisierte Notation: Datensatz &lt;- Datensatz %&gt;% Funktion. Der Befehl <em>%&gt;%<\/em> wird \u201cPipe\u201d genannt und dr\u00fcckt aus, dass alles was rechts davon steht auf alles links davon angewendet wird.<\/p>\n<p>Wenn wir nun zum Beispiel in unserem Datensatz den Messwert mit 100 multiplizieren wollen, k\u00f6nnen wir Folgendes eingeben:<\/p>\n<div id=\"cb47\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb47-1\">Datensatz<span class=\"sc\">$<\/span>Messwert <span class=\"ot\">&lt;-<\/span> Datensatz<span class=\"sc\">$<\/span>Messwert<span class=\"sc\">*<\/span><span class=\"dv\">100<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Alternativ k\u00f6nnen wir mit der sogenannten \u201cPipe\u201d aus tidyverse und dem tidyverse Funktion <em>mutate()<\/em> die Variablen ver\u00e4ndern:<\/p>\n<div id=\"cb48\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb48-1\"><span class=\"fu\">library<\/span>(tidyverse)<\/span>\r\n<span id=\"cb48-2\">Datensatz <span class=\"ot\">&lt;-<\/span> Datensatz <span class=\"sc\">%&gt;%<\/span> <span class=\"fu\">mutate<\/span>(Messwert<span class=\"sc\">*<\/span><span class=\"dv\">100<\/span>)<\/span><\/code><\/pre>\n<\/div>\n<p>Letzeres klingt bei dieser einfachen Operation deutlich aufw\u00e4ndiger. Aber wie wir sp\u00e4ter bei verschachtelten Befehlen sehen werden, kann diese Notation von tidyverse auch durchaus Vorteile bringen.<\/p>\n<p>Mit der <em>mutate<\/em> Funktion lassen sich auch einzelne Werte \u00e4ndern oder der Variablentyp anpassen. Nehmen wir an, wir wollen aus \u201cID\u201d einen Faktor machen:<\/p>\n<div id=\"cb49\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb49-1\">Datensatz <span class=\"ot\">&lt;-<\/span> Datensatz <span class=\"sc\">%&gt;%<\/span> <span class=\"fu\">mutate<\/span>(<span class=\"at\">ID =<\/span> <span class=\"fu\">factor<\/span>(ID))<\/span><\/code><\/pre>\n<\/div>\n<p>Ein weiterer hilfreicher Befehl f\u00fcr das Datenmanagement aus dem tidyverse ist <em>rename<\/em>. Hiermit lassen sich Variablen einfach umbennenen.<\/p>\n<p>Nutzen wir daf\u00fcr die Daten \u201cNoten\u201d von eben und bennenen die Gruppen 1 und 2 in Gruppe A und B um:<\/p>\n<div id=\"cb50\" class=\"sourceCode\">\n<pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb50-1\">Noten <span class=\"ot\">&lt;-<\/span> Noten <span class=\"sc\">%&gt;%<\/span> <span class=\"fu\">rename<\/span>(<span class=\"at\">GruppeA =<\/span> Gruppe1, <span class=\"at\">GruppeB =<\/span> Gruppe2)<\/span><\/code><\/pre>\n<\/div>\n<p>In diesem Video zeige ich, wie das in R funktioniert:<\/p>\n<div class=\"vembedr\" style=\"margin: auto;\">\n<div><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/b_Yr07WJLxE\" width=\"533\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" data-external=\"1\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<div id=\"\u00fcbung-2\" class=\"section level2 hasAnchor\">\n<h1>\u00dcbung<\/h1>\n<ul>\n<li>Nutzen Sie tidyverse, um im Datensatz die Messewerte jeweils zu halbieren.<\/li>\n<li>Nutzen Sie tidyverse, um im Datensatz die Variable \u201cGeschlecht\u201d in \u201cGender\u201d umzubenennen.<\/li>\n<\/ul>\n<p>Die L\u00f6sung zu dieser \u00dcbungsaufgabe gibt es im neuen Buch<a href=\"https:\/\/amzn.to\/3MLBUb8\"> Statistik mit R &amp; RStudio<\/a>.<\/p>\n<p><a href=\"https:\/\/amzn.to\/3MLBUb8\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1822\" src=\"http:\/\/statistikgrundlagen.de\/ebook\/wp-content\/uploads\/sites\/2\/2023\/04\/rbuch_amz2.png\" alt=\"\" width=\"900\" height=\"577\" \/><\/a><br \/>\nEs gibt noch viele weitere n\u00fctzliche Funktionen bei tidyverse. Wer hier mehr erfahren m\u00f6chte, wird unter: <a class=\"uri\" href=\"https:\/\/tidyverse.tidyverse.org\/\">https:\/\/tidyverse.tidyverse.org\/<\/a> f\u00fcndig.<\/p>\n<\/div>\n","protected":false},"author":1,"menu_order":1,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"part":1725,"_links":{"self":[{"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/pressbooks\/v2\/chapters\/1732"}],"collection":[{"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":7,"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/pressbooks\/v2\/chapters\/1732\/revisions"}],"predecessor-version":[{"id":1893,"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/pressbooks\/v2\/chapters\/1732\/revisions\/1893"}],"part":[{"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/pressbooks\/v2\/parts\/1725"}],"metadata":[{"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/pressbooks\/v2\/chapters\/1732\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/wp\/v2\/media?parent=1732"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/pressbooks\/v2\/chapter-type?post=1732"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/wp\/v2\/contributor?post=1732"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/statistikgrundlagen.de\/ebook\/wp-json\/wp\/v2\/license?post=1732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}