matrix_data <- rep(c(1, 2, 3), times = 3) m <- matrix(data = matrix_data, ncol = 3, nrow = 3) m <- matrix(data = c(1:9), ncol = 3) m
Hinzufügen einer Beschriftung der Reihen
rownames(m) <- c("a", "b", "c")
Beschriftung der Spalten
colnames(m) <- c("one", "two", "three") m
Oder man könnte Zeilen- und Spaltennamen von Anfang an hinzufügen ...
m <- matrix( matrix_data, ncol = 3, dimnames = list(c("a", "b", "c"), c("one", "two", "three")) )
Indizierung wie bei Vektoren über eckige Klammern, allerdings unter Angabe von zwei Werten (kommagetrennt).
m[1,1] # Wert der ersten Reihe, erste Spalte m[1,2] m[2,3] # m[,2] # die zweite Spalte
m[,"one"] # Indizierung über Spaltenbeschriftung is(m[,"one"]) # man sollte immer wissen was man bekommt! m[,c("one", "two")] is(m[,c("one", "two")])
rowSums(m) # Reihensummen colSums(m) # Spaltensummen
Vorausblick: Eine wirklich sehr "R"-artige Arbeitsweise mit Matrizen ist, zeilen- oder spaltenweise Funktionen anzuwenden
apply(m, 1, mean) # Mittelwert zeilenweise colmeans <- apply(m, 2, mean) # Mittelwert reihenweise
Listen sind komplexe Datenstrukturen, in die beliebige andere Formate eingespeist werden. Sehr praktisch! Prinzip Apothekerschrank.
fgw_exp <- c(39, 16, 9, 5, 7, 18, 6) parties <- c("CDU/CSU", "SPD", "AfD", "FDP", "LINKE", "GRÜNE", "Sonstige") party_colors <- c("black", "red", "blue", "yellow", "pink", "green", "grey") fgw <- list( party = parties, share = fgw_exp, color = party_colors ) fgw
fgw[["share"]] # Zugriff auf ein Element der Liste fgw$share # Zugriff mit Dollarzeichen is(fgw$share) is(fgw$color) names(fgw)
length(fgw) length(fgw[[1]])
Ausblick: Nichts ist so "R"-ish wie lapply
lapply(fgw, length)
head(iris)
head(mtcars)
df <- data.frame(fgw) is(df) df[["share"]] df$share
.pull-left[
nrow(df) ncol(df) dim(df) colnames(df) rownames(df)
]
.pull-right[
df[, c("party", "share")] df[1:3,]
]
Subsetting über Indizierung
df[df$share > 10,]
Subsetting mit der subset()
-Funktion
subset(df, share > 10)
library(gles) data(bt2013) # see questionnaire("bt2013") dim(bt2013)
party_vote <- bt2013[["v11aa"]] party_vote_min <- party_vote[!is.na(party_vote)] round(table(party_vote_min) / length(party_vote_min) * 100, 2)
Wenn Sie möchten ... gerne Antwort mit Balkendiagramm!
Im Netz gibt es reichlich Informationen - Tabellen und Daten "wie Sand am Meer".
Wie extrahiert man Tabellen aus html-Dokumenten? Ein Mini-Szenario:
fgw_url <- "https://www.wahlrecht.de/umfragen/politbarometer.htm" xml <- xml2::read_html(fgw_url) tab <- rvest::html_table(xml, fill = TRUE)[[2]]
gsub()
)Datumsangaben standardisieren
Viel Spass beim Datensammeln!
(Mögliches Ziel: Visualisierung der Wahlbeteiligung in Wahlkreisen in Balkendiagramm in absteigender Reihenfolge)
# Wir hollen Tabelle in Rohformat von Internet-Seite des Bundeswahlleiters geholt werden btw2013url <- "https://www.bundeswahlleiter.de/dam/jcr/2ace94c3-15cb-476b-aa98-806b97209353/btw13_kerg.csv" bt13raw <- read.table(btw2013url, header = T, skip = 2, fileEncoding = "ISO-8859-1", sep = ";") bt13 <- bt13raw[3:nrow(bt13raw),] # Zeilen 1 und 2 loswerden bt13min <- bt13[, c("Gebiet", "gehört", "Wahlberechtigte", "Wähler")] bt13min[, "Wahlberechtigte"] <- as.numeric(as.vector(bt13min[,"Wahlberechtigte"])) bt13min[, "Wähler"] <- as.numeric(as.vector(bt13min[,"Wähler"])) bt13min[["Wahlbeteiligung"]] <- bt13min[["Wähler"]] / bt13min[["Wahlberechtigte"]] head(bt13min, n = 3)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.