ein Portrait von mir

Dipl.Math. Dr. Haiko Lüpsen
Statistik & Kurse

Zusammenfassung S, S-Plus und R:
Elementare Befehle und Funktionen

Erzeugen von Daten
Namen für Elemente
Zeichenmanipulationen
Wandeln von Objekten
Zusammenfassen von Vektoren und Matrizen
Auswahl von Teilmatrizen/Vektoren
Funktionen bei Matrizen
Ersetzen von Werten und Variablen
Handhabung von Missing Values
Ausgabe von Ergebnissen
Arbeiten mit Dataframes
Diverses


Erzeugen von Daten

Anfangswert, Endwert und Schrittweite müssen nicht ganzzahlig und dürfen negativ sein.

Erzeugen eines Vektors:
x <- c(.., .., ..)

Erzeugen eines Vektors x mit aufeinanderfolgenden Zahlen :
x <- Anfangswert:Endwert

Erzeugen eines Vektors x mit Zahlen :
x <- seq(Anfangswert, Endwert, by=Schrittweite, length.out=Anzahl)

Replizieren eines Vektors (Anzahl darf ein Vektor sein):
x <- rep(Vektor, times=Anzahl) Wiederholung des gesamten Vektors
x <- rep(Vektor, each=Anzahl) Wiederholung der einzelnen Elemente des Vektors

Generierung von Faktor-Levels:
f <- gl(n,k) Errzeugen von k Levels 1, k Levels 1,...,k Levels n,

Erzeugen eines Vektors x mit aufeinanderfolgenden kleinen Buchstaben :
x <- letters[Anfangswert:Endwert]

Erzeugen eines Vektors x mit aufeinanderfolgenden großen Buchstaben :
x <- LETTERS[Anfangswert:Endwert]

Abkürzungen der 12 Monatsnamen bzw. Tagesnamen:
month.abb
day.abb
(nur S-Plus)

Namen für Elemente

Namen für die Elemente eines Vektors:
names(Vektor) <- c("..", "..",...)

Namen für die Elemente eines Data-Frames:
names(Dataframe) <- c("..", "..",...) (für Variablennamen, Spalten)
row.names(Dataframe) <- c("..", "..",...) (für Fallkennzeichnungen, Zeilen)

Namen für die Zeilen und Spalten einer Matrix oder Tabelle:
rownames(Matrix) <- c("..", "..",...)
colnames(Matrix) <- c("..", "..",...)

Namen für die Elemente einer Matrix bzw. eines Arrays Array:
dimnames(Array) <- list(c("..", "..",...), c("..", "..",...))
dimnames(Array)[Dimension] <- list(c("..", "..",...))

Namen für die Werte einer nominalen oder ordinalen Variablen (durch Wandlung in Typ "factor"):
factor(Vektor, levels=c(...), labels=c(...)) Vergabe von Wertenamen
as.numeric(Faktor) Zurücksetzen auf numerische Werte
levels(Faktor) Wertenamen (z.B. für Verwendung in Legenden)

Zeichenmanipulationen

elementweises Verbinden von Vektoren beliebigen Typs zu einem Vektor vom Typ character mit einem vorgegebenen Trennzeichen, wobei wahlweise über collapse alle Elemente des Ergebnisvektors zu einer Zeichenkette verbunden werden können
paste(...,...,...,sep=Trennzeichen,collapse=Zeichen)

Trennen eines Vektors vom Typ Character an einem vorgegebenen Trennzeichen
unpaste(...,sep=Trennzeichen) (nur SPlus)

(elementweise) Auswahl einer Zeichenkette aus einem Vektoren vom Typ Character
substring(Vektor, Startposition, Endposition)

Teilen einer Zeichenkette
strsplit(...,Trennzeichen)

Zeichenzahl der Elemente eines Vektors vom Typ Character
nchar(Vektor) Zeichnzahl pro Element

Wandeln in Klein- bzw. Großbuchstaben für die Elemente eines Vektors vom Typ Character
tolower(Vektor) Wandeln in Kleinbuchstaben
toupper(Vektor) Wandeln in Großbuchstaben

Suchen nach einer Zeichenkette in einem Vektor vom Typ Character
grep(Zeichenkette, Vektor) gibt die Indizes von Vektor aus, wo Zeichenkette gefunden wurde
sub(Zeichenkette1, Zeichenkette2, Vektor) ersetzt die Zeichenkette1 durch die Zeichenkette2 in Vektor

Ersetzen der Zeichen in string1 durch durch die korrespondierenden Zeichen in string2 in einem Vektor
chartr(string1, string2, Vektor)

Abkürzungen der Elemente eines Vektors vom Typ Character auf n Zeichen
abbreviate(Vektor, minlength=n)

Wandeln von Objekten

Vektor in Matrix
x <- matrix(Vektor,ncol=..., nrow=...)

Vektor in Array
dim(x) <-c (Dimension1, Dimension2, ...)
x <- array(Vektor,c(Dimension1, Dimension2, ...))

Vektoren in Data Frames mit Übernahme der Vektornamen als Variablennamen:
x <- data.frame(Vektor1, Vektor2, ...)

Vektoren in Data Frames mit Vorgabe von Variablennamen:
x <- data.frame(Name1=Vektor1, Name2=Vektor2, ...)

Vektor in eine (univariate) Zeitreihe
x <- ts(Vektor, frequency=Periodenlange)

Univariate Zeitreihen in eine multivariate Zeitreihe
x <- tsmatrix(Zeitreihe1, Zeitreihe2, ...) (nur SPlus)

Vektor in Factor
factor(Vektor) Wandlung in Typ "factor" (Übernahme der Werte als Labels)
factor(Vektor, labels=...) Wandlung in Typ "factor" (Vorgabe von Labels)
ordered(Vektor, levels=..., labels=...) Wandlung in Typ "factor" mit Sortierung
cut(Vektor,Intervallanzahl) Einteilung in Intervalle mit Wandlung in Typ "factor"
cut(Vektor,c(Liste von Intervallgrenzen)) Einteilung in Intervalle mit Wandlung in Typ "factor"
cut(Vektor,c(Liste von Intervallgrenzen), labels=...) Einteilung in Intervalle mit Wandlung in Typ "factor" (Vorgabe von Labels)
interaction(Factor1,Factor2,...) Bilden einer Faktor-Interaktion

as.numeric(Factor) Zurückwandeln in numerische Werte (1,2,3...)
as.numeric(levels(Factor))[Factor] Zurückwandeln in numerische Werte mit Wiederherstellen der originalen Werte

Bilden von Listen
list(name1=Object1,name2=Object2,...) Zusammenfassen von Object1,... zu einer Liste
unlist(list) Zusammenfügen der Objekte einer Liste zu einem Vektor (nicht immer sinnvoll)

Allgemeine Funktionen zum Wandeln:
as.character(Vektor) Wandlung in Typ "character"
as.numeric(Vektor) Wandlung in Typ "numerisch"
as.integer(Vektor) Wandlung in Typ "ganzzahlig numerisch"
as.logical(Vektor) Wandlung in Typ "logisch" (0->F , sonst T)
as.vector(Matrix) Wandlung einer Matrix in einen Vektor
as.matrix(Dataframe) Wandlung eines Dataframes in eine Matrix

Datum in der Reihenfolge Jahr-Monat-Tag:
as.Date(Character-Vektor,format="...") Wandeln vom Typ Character in Date
strptime(...) für eine Liste der Format-Spezifikationen, u.a.
%d (Tag), %m (Monat, dezimal), %B (Monatsname), %b (Monatsname, kurz), %Y (Jahr), %y (Jahr 2-stellig)

Bearbeiten und Wandeln von Zeitangaben: Pakete "chron" und "timeDate".

Zusammenfassen von Vektoren und Matrizen

"nebeneinander", als Spalten (auch bei Data-Frames möglich):
x <- cbind(Vektor1/Matrix1, Vektor2/Matrix2,....)

"untereinander", als Zeilen:
x <- rbind(Vektor1/Matrix1, Vektor2/Matrix2,....)

Objekte in Listen
x <- list(Name1=Objekt1, Name2=Objekt2, ...)

Verbinden der einzelnen Teile einer Liste zu einem Vektor:
unlist(Listenname)

Erweitern einer Datenmatrix um zusätzliche Variablen Vektor1, Vektor2,.. mit den neuen Namen Name1, Name2,...
x <- data.frame(DataFrame, Name1=Vektor1, Name2=Vektor2,...)

Zusammenfügen von 2 DataFrames: Hinzufügen von Variablen:
merge (DataFrame1, DataFrame2, by.x=0, by.y=0, all.x=T) (via Fallnummer)
merge (DataFrame1, DataFrame2, by.x=Var1, by.y=Var2, all.x=T) (via Variable Var1 bzw. Var2)

Zusammenfügen von 2 DataFrames: Hinzufügen von Fällen:
merge (DataFrame1, DataFrame2, by.x=Varliste1, by.y=Varliste2, all=T) (mit Variablelisten als Vektoren, wahlweise Spaltennummern oder Variablennamen)

Auswahl von Teilmatrizen/Vektoren

Ausgewählte Zeilen:
subset(DataFrame, logische Bedingung)
DataFrame[logische Bedingung, ]

Ausgewählte Spalten:
subset(DataFrame, select=Spaltenauswahl)
DataFrame[ ,Vektor mit Spaltenauswahl]

Auswahl einer Zufallsauswahl vom Umfang n:
sample(Vektor, n)

Aufsplitten eines Vektors entsprechend einem Vektor vom Typ factor
split(Vektor, Faktor)

Größe von Vektoren, Matrizen, DataFrames

length(x) # Variablen (DataFrames), # Elemente (Matrizen) bzw. Vektorlänge (Vektoren)
dim(x) # Zeilen und Spalten (DataFrames) bzw. Länge der Dimensionen bei Matrizen und Arrays
nrow(x)# Zeilen von Matrizen und DataFrames, =1 bei Vektoren
ncol(x)# Spalten von Matrizen und DataFrames, =Länge bei Vektoren

Ersetzen von Werten und Variablen

Ersetzen von Werten innerhalb eines Vektors:
replace(x, Indizes, Werte)

Ersetzen einer Variablen innerhalb eines Data-Frames:
DataFrame$Variable <- ...
within(DataFrame, Variable <- ...)

Umkodieren eines Vektors:
recode(x, neuer Wert<-c(alte Werte), neuer Wert<-c(alte Werte) (Paket "memisc")

Handhabung von Missing Values

Viele Funktionen erlauben einen Parameter wie z.B. "na.rm", der bewirkt Fälle mit MV ausgeschlossen werden:
Funktion(..., na.rm=T) bei statistischen Funktionen
Funktion(..., useNA.rm="ifany") bei table
sort(..., na.last=T/F/NA) NAs ans Ende/Anfang/entfernen

Einige Funktionen zur multivariaten Analyse erlauben einen Parameter "na.action", der bewirkt Fälle mit MV ausgeschlossen werden:
Funktion(..., na.action=na.omit) Fälle mit MV werden von der Analyse ausgeschlossen.
Funktion(..., na.action=na.exclude) Fälle mit MV werden von der Analyse ausgeschlossen aber bei Ergebnisvariablen mit MV aufgefüllt (bislang nur lm und glm)

Auswahl aller Fälle ohne MV:
na.omit(Datenmatrix) Fälle mit MV werden eliminiert.
na.exclude(Datenmatrix)Fälle mit MV werden von der Analyse ausgeschlossen aber bei Ergebnisvariablen mit MV aufgefüllt.

Abfrage der MV einer Variablen/Datenmatrix:
is.na(Variable/Datenmatrix)
is.missing(Variable/Datenmatrix) (R: Paket splus2R)

logische Abfrage, ob ein Objekt definiert ist (z.B. als Parameter in einer Funktion)
is.null(x)

Ausgabe einer Variable, die anzeigt, ob ein Fall fehlende Werte hat oder nicht (T/F):
complete.cases(Datenmatrix)

Ausgabe der Indizes der MV einer Variablen/Datenmatrix:
which.na(Variable/Datenmatrix) (R: Paket splus2R)

Ausgabe von Ergebnissen

u.a. Wandlung eines numerischen Vektors in den Typ character und (wahlweise) Ausgabe auf eine Datei:
cat (x1, x2, x3,..., file="...", sep="...", append=F/T)
x1, x2, x3,... können beliebige Vektoren (oder Konstanten, z.B. Text) sein,
mit "sep" wird (wahlweise) ein Zeichen festgelegt, das alle Elemente miteinander verbindet,
Zeilenumbrüche werden durch "\n" erzeugt
mit append=T kann eine bestehende Datei ergänzt werden.

Ausgabe von Objekten (z.B. in Funktionen):
print(...)

Erzwingen der Ausgabe auf den Bildschirm (also keine Pufferung)
flush.console()

Arbeiten mit Dataframes

Ausführen mehrerer Kommandos, z.B. Datenmanipulationen, für einen Dataframe, und anschließender Speicherung:
within(DataFrame, {Kommando1; Kommando2;...}) -> ...

Ausführen eines Kommandos, z.B. statistische Analyse, für einen Dataframe:
with(DataFrame, Kommando)

Anzeigen der ersten, letzten bzw. einer Zufallsauswahl von Zeilen eines Dataframes, einer Matrix oder eines Vektors:
head(DataFrame, n=Anzahl Zeilen) (Paket "utils")
tail(DataFrame, n=Anzahl Zeilen) (Paket "utils")
some(DataFrame, n=Anzahl Zeilen) (Paket "car")

Diverses

Setzen von Parametern, u.a. für die Ausgabe:
options(...)

Logischer Vergleich zweier Vektoren: für die Positionen von x , ob der Wert von x in y vorkommt
x %in% y
jeweils T/F, ob der Wert von x in y vorkommt
match(x, y)
jeweils Indexposition in y, wo der Wert von x in y vorkommt

Elimination doppelter Werte (Vektoren) bzw. Zeilen (Matrizen und Dataframes)
unique(x, fromLast=T/F) (wahlweise am Anfang/Ende beginnend)

Markierung doppelter Werte innerhalb eines Vektoren als TRUE
duplicated(x)

Abfrage, ob Werte der Vektors x im Vektor y enthalten sind
x %in% y


Haiko Lüpsen
Letzte Änderung: 1.12.2020