# --------- Sample Session ------- rm(list = ls()) # ---------------------------------- # 2.1 The Forbes 2000 Ranking of the World's Biggest Companies # install.packages("HSAUR2") library(HSAUR2) # Welche Datensätze gibt es im Paket "HSAUR2" data(package = "HSAUR2") # Daten laden data("Forbes2000", package = "HSAUR2") ls() # Hilfeseite zu den Daten öffnen ?Forbes2000 help("Forbes2000", package = "HSAUR2") # Interne Struktur des R-Objekts mit str() # Gibt für jede Variable die Klasse und die ersten Beobachtungen aus str(Forbes2000) str(Forbes2000, vec.len = 1) # verkürzter Ausschnitt # Daten anschauen print(Forbes2000) # alle Zeilen head(Forbes2000) # die ersten 6 Zeilen tail(Forbes2000) # die letzten 6 Zeilen head(Forbes2000, n=2) tail(Forbes2000, n=20) # Dimension des Datensatzes nrow(Forbes2000) # Anzahl an Zeilen ncol(Forbes2000) # Anzahl an Spalten dim(Forbes2000) # Anzahl an Zeilen und Spalten # dim(Forbes2000)[1] # dim(Forbes2000)[2] # Variablennamen names(Forbes2000) # ---------------------------------- # 2.2 Simple Summary Statistics # Summary: 5-Punkte-Zusammenfassung plus Mean für numerische Variablen, # absolute Häufigkeiten für Faktoren summary(Forbes2000) # für numerische Variablen mean(Forbes2000$sales) median(Forbes2000$sales) range(Forbes2000$sales) quantile(Forbes2000$sales) quantile(Forbes2000$sales,probs=seq(0,1,by=0.05)) # für Faktor-Variablen table(Forbes2000$category) prop.table(table(Forbes2000$category)) nlevels(Forbes2000$category) levels(Forbes2000$category) # ---------------------------------- # 2.3 Subsets # Auswahl/Ausschluss von Zeilen Forbes2000[1:10, ] Forbes2000[-(20:2000),] # Auswahl/Auschluss von Spalten Forbes2000[, 2] # nach Index Forbes2000$name # nach Name Forbes2000[, "name"] # nach Name Forbes2000[,c("name", "country")] Forbes2000[,-c(3:ncol(Forbes2000))] # nach Index # Forbes2000[, -"name"] # funktioniert nicht Forbes2000[,-which(names(Forbes2000) == "name")] Forbes2000[,-which(names(Forbes2000) %in% c("name", "country"))] # Kombination aus beidem vars <- c("name", "sales", "profits", "assets") Forbes2000[1:3, vars] # Logische Vektoren Forbes2000$assets > 1000 table(Forbes2000$assets > 1000) # Auswahl über logische Bedingung (alle Einträge mit TRUE werden ausgewählt) Forbes2000[Forbes2000$assets > 1000, "name"] Forbes2000[which(Forbes2000$assets > 1000), "name"] # mit which Zugriff auf den Index Forbes2000[Forbes2000$country == "Australia" & Forbes2000$rank < 100, ] # und-Operator Forbes2000[Forbes2000$country == "Australia" | Forbes2000$rank < 100, ] # oder-Operator # Mit der subset()-Funktion ?subset subset(x=Forbes2000, subset=Forbes2000$assets > 1000, select=vars) # ---------------------------------- # 2.4 Missing Values # Fehlende Werte sind mit NA kodiert. # 'not available' or 'missing value' summary(Forbes2000$profits) # Der Umgang mit NA's kann in vielen Funktionen angegeben werden. mean(Forbes2000$profits) ?mean mean(Forbes2000$profits, na.rm = TRUE) cor(Forbes2000$profits, Forbes2000$sales) ?cor cor(Forbes2000$profits, Forbes2000$sales, use="pairwise.complete.obs") # is.na() identifiziert die fehlenden Werte which(is.na(Forbes2000$profits)) # which(is.na(Forbes2000)) # nicht so hilfreich which(is.na(Forbes2000), arr.ind=TRUE) # Den Index der gültigen Werte einer Variable erhält man mit which(!is.na(Forbes2000$profits)) # Vollständige Fälle complete.cases(Forbes2000$profits) # vollständige Einträge complete.cases(Forbes2000) # vollständige Beobachtungen (Zeilen) # Löschen aller Beobachtungen mit fehlenden Werten (eher unüblich) ?na.omit Forbes2000cc <- na.omit(Forbes2000) dim(Forbes2000cc) mean(Forbes2000cc$profits) # ---------------------------------- # 2.5 Basic Data Manipulations # Erzeugen einer neuen Variable mit: Datensatz$Variablenname <- ... Forbes2000cc$costs <- Forbes2000cc$sales - Forbes2000cc$profits # Löschen einer Variable mit: Datensatz$Variablenname <- NULL Forbes2000cc$category <- NULL dim(Forbes2000cc) # Gleichzeitiges Bearbeiten mehrerer Variablen # Manche Funktionen können gleichzeitig auf mehrere Spalten angewendet werden (hier Standardisieren) Forbes2000cc[, 4:7] <- scale(Forbes2000cc[, 4:7]) # Andere Funktionen können nur auf Vektoren angewendet werden median(Forbes2000cc[, 4:7]) c(median(Forbes2000cc[, "sales"]), median(Forbes2000cc[, "profits"])) # Alternative mit apply bzw. sapply (siehe auch Kapitel zur Vekorisierung) ?apply apply(X=Forbes2000cc[, 4:7], MARGIN=2, FUN=median) ?sapply sapply(X=Forbes2000cc[, 4:7], FUN=median) # Simultane Analyse einer Zeile - schwierig, da meist Variablen unterschiedlicher Klassen Forbes2000cc[722, ] # Manipulation von Zellen Forbes2000cc[722, "sales"] <- 0.05 Forbes2000cc[722, ] # ---------------------------------- # 2.6 Saving data # Speichern eines einzelnen R-Objekts in einer Datei ?saveRDS saveRDS(Forbes2000cc, file = "Forbes2000cc.rds") rm(Forbes2000cc) # Laden des gespeicherten Objekts Forbes2000cc <- readRDS("Forbes2000cc.rds") # Alternativen: ?write.table # zum Speichern von Datensätzen als Text-Datei ?save # zum Speichern eines oder mehrerer Objekte ?save.image # zum Speichern des gesamten Arbeitsverzeichnises setwd("...") save.image(file="workspace.RData")