XML (eXtended Markup Language)
Es gibt Alternativen zum "base R" data.frame
:
tibble
(verbesserte Ausgabe)data.table
(Vermeidung des Kopierens von Daten)
Das dplyr-Paket bietet ein weit verbreitetes Vokabular zur Arbeit mit Tabellen
Mind the tidyverse!
| Operator | Description | |----------|--------------| | + | addition | | - | subtraction | | * | multiplication | | / | division | | ^ or ** | exponentiation |
| Operator | Description | |----------|-------------| | < | kleiner als / less than | | <= | kleiner gleich / less than or equal to | | > | größer als / greater than | | >= | größer gleich / greater than or equal to | | == | exakt gleich / exactly equal to | | != | ungleich / not equal to | | !x | nicht x / Not x | | x & y | x UND y / x AND y | | isTRUE(x) | ist wahr? / test if X is TRUE |
%in%
nützlich, um das Auftreten der Elemente eines Vektors in einem zweiten Vektor zu prüfenschokolade <- c("milka", "lindt", "ritter-sport", "alpia", "schogetten") schokolade[4] == "alpia"
if (schokolade[5] != "alpia"){ print("her mit dem zeug") } else { print("bleib mir weg damit") }
else if
erweitert werden´for (i in c(1,2,3,4,5)) print(i) # auch für character vectors, logische vektoren
for (i in 1:5){ print(i) }
for (i in c("a", "b", "c")){ print(i) }
for (schoki in schokolade) print(schoki)
for (i in 1:length(schokolade)) print(schokolade[i])
Hier ein ganz einfaches Szenario, das man aber in der Praxis oft nutzen kann: Iteration durch einen Vektor und Durchführung einer Anweisung, wenn eine bestimmte Bedingung erfüllt ist.
for (schoki in schokolade){ if (schoki == "alpia"){ print("großer jubel") } else { print("weg damit!!!!") } }
add_one <- function(x){x + 1} add_one(1)
add_anything <- function(x, y){x + y} add_anything(5, 5)
add_anything_default <- function(x, y = 2){ x + y } add_anything_default(x = 5) add_anything_default(x = 5, 3) add_anything_default(x = 5, y = 6)
Warum es gut ist, Funktionen zu verstehen ... Ein kleines Szenario:
tab <- read.table( "https://opendata-duisburg.de/sites/default/files/Corona%2030.04.2020.csv", sep = ";" ) tab[1:5,]
Was muss man tun, um eine ordentliche Tabelle zu importieren?
Insbesondere im "tidyverse"-Ökosystem sind Verkettungen von Funktionsaufrufen über "Pipes" gängig. Hier wird der Rückgabewert einer Funktion zum ersten Argument der nachfolgenden Funktion, die mit dem Pipe-Operator %>%
angebunden wird.
library(magrittr) tab <- read.table("https://opendata-duisburg.de/sites/default/files/Corona%2030.04.2020.csv", sep = ";", header = TRUE) tab[["Datum"]] <- as.Date(tab[["Datum"]], format = "%d.%m.%Y ") tab %>% subset(Datum >= as.Date("2020-04-01")) %>% barplot(height = .[["X.Aktuell.infiziert"]])
lapply(1:3, function(x){x + 1}) sapply(1:3, function(x){x + 1})
Analysieren Sie die Altersstruktur der Wähler_innen der Parteien bei der Bundestagswahl 2017 mit dem GLES-Datensatz. Legen Sie dafür ein mehrseitiges pdf-Dokument an: Auf jeder Seite soll ein Törtchen-Diagramm den prozentualen Anteil einer Alterskohorte zeigen.
Tip: Vermutlich werden Sie mit einer Schleife arbeiten? Bevor eine Schleife durchgeführt wird, öffnen Sie ein pdf-Dokument.
pdf(file = tempfile())
Dieses muss dann am Ende geschlossen werden ...
dev.off()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.