Data Science 1 - Programmieren & Visualisieren
Saskia Otto
Universität Hamburg, IMF
Wintersemester 2022/2023
<-
:Über den Namen kann auf den Inhalt zugegriffen werden:
Einzelne Skalare und andere Objekte und Funktionen lassen sich aus dem Arbeitsbereich mit rm()
und dem entsprechenden Namen löschen:
Du kannst die Liste aller Objekte des Arbeitsbereich auch in der Konsole anzeigen lassen mit ls()
:
→ Wie Du siehst, ist logisch2
nicht mehr gelistet, nachdem es gelöscht wurde.
Das Datum (date) und Faktoren (factor) stellen zusammengesetzte Datentpen dar.
Datentyp | Definition | Variablentyp | Skalenniveau |
---|---|---|---|
logical | Logische (Boolean) Werte (TRUE oder FALSE ) |
kategorial | nominalskaliert |
integer | Natürliche ganze Zahlen | quantitativ (diskret) | ordinal-/intervall-/verhältnisskaliert |
double | Gleitkommazahl | quantitativ (kontinuierlich) | intervall-/verhältnisskaliert |
numeric | Alle Zahlen (integer und double) | quantitativ | |
complex | Komplexe Zahlen (z.B. 5i) | quantitativ | |
character | Zeichen (oder Zeichenkette) | qualitativ/kategorial | nominalskaliert |
NULL | leerer Inhalt |
typeof()
is.xxx()
Diese Funktionen geben ein TRUE
oder FALSE
zurück:
as.xxx()
02:00
Der Skalar n
in der letzten Operation wurde vorher nicht definiert. Daher muss sich die vorherige Zuweisung auf dieses Skalar beziehen. Auch y
wurde vorher nicht definiert, daher kann es sich beim ‘Grösser’-Zeichenin in der letzten Zeile nicht um einen Vergleichsoperator handeln, sondern muss der erste Teil des Zuweisungsoperators sein.
Bevor auf my_value
in Zeile 2 zugegriffen werden kann, muss das Skalar erstmal definiert werden. Dies geschieht mit dem Zuweisungsoperator (<-
).
Anschl. muss eine Funktion aufgerufen werden, die einen logischen Wert zurückgibt. Dies kann nur eine der is.xxx
Funktionen sein. Jetzt überlege mal, welchen Datentyp ‘A1’ haben könnte?
c()
verschachtelt:length()
und str()
ermittelt werden kann:00:40
Implizierte Datentyp-Umwandlung (‘coercion’)
Handling von Vektoren unterschiedlicher Länge (‘recycling’)
Namen für Elemente in Vektoren
Extrahieren von Elementen bzw. Teilmengen bilden (Indexierung oder ‘indexing’)
TRUE
zu einer 1 und FALSE
wird zu 0.sum()
und mean()
sehr nützlich sein:01:30
Wie könnten alle NAs in einem Vektor x
mit sehr vielen Elementen schnell ermittelt werden?
Zuerst wird mit der is.na()
Funktion bei jedem Element abgefragt, ob es sich um ein NA handelt oder nicht.
Anschließend kann mit dem zurückgegebenen logischen Vektor die Summe aller TRUEs berechnet werden - denn R wandelt bei mathematischen Operationen von logischen Werten alle FALSEs in eine 0 um und alle TRUEs in eine 1!
00:20
Alle Elemente in Objekten können Namen erhalten - auch in Vektoren:
c()
names()
.[...]
ist die Funktion mit der Vektoren indexiert werden.neuer_vektor <- alter_vektor[auswahl]
.Die Positionsangabe erfolgt über eine Ganzzahl oder einen numerischen Vektor mit Ganzzahlen. Der Index startet immer mit 1 und endet mit der Länge des Vektors (length(vector)
).
[1] "eins" "drei" "vier" "fünf"
[1] "zwei" "vier"
[1] "vier" "fünf"
[1] "vier" "fünf"
[1] "eins" "zwei" "drei" "vier"
Vektor(Abfrage)
], ähnlich wie bei einer Bedingung.NA
angezeigt (= ‘not available’).NA
nimmt immer den Datentyp der anderen Elemente an, auch wenn das meist nicht sichtbar ist.is.na()
prüfen, ob ein Element ein NA ist und diese anschl. aufsummieren, um die Gesamtzahl aller NAs zu erhalten.03:00
Ein Vektor x enthält 20 verschiedene Elemente.
Ein Vektor x enthält 20 verschiedene Elemente.
Ein Vektor x enthält 20 verschiedene Elemente.
Ein Vektor vec enthält mehrere Zahlen.
Wir nutzen dazu den Modulo-Operator, welcher eine Restwert-Division zweier Elemente ausführt. Bei der Restwert-Division von 43 (Dividend) durch 5 (Divisor) wird z.B. gefragt, wie man die Zahl 43 als Vielfaches von 5 und einem kleinen Rest darstellen kann: \(43=5*c+r\) In diesem Beispiel wäre die 4 der sog. Ganzzahlquotient c und die 3 der Restwert r.
Ein Rest ungleich 0 ergibt sich folglich genau dann, wenn der Dividend kein Vielfaches des Divisors ist. Man sagt auch: Der Dividend ist nicht durch den Divisor teilbar, weshalb ein Rest übrigbleibt.
Dies können wir uns zunutze machen, indem wir als Divisor die 2 nehmen. Wenn kein Restbetrag übrig bleibt, muss der Dividend gerade sein!
Ein Vektor vec enthält mehrere Zahlen.
Ein numerischer Vektor nvec enthält eine unbekannte Anzahl an Elementen.
Vergleichs- und Verknüpfungsoperatoren geben immer einen logischen Wert (TRUE oder FALSE) zurück.
Operator | Anwendung | Beschreibung |
---|---|---|
< | a < b | a ist KLEINER als b |
> | a > b | a ist GRÖSSER als b |
== | a == b | a ist GLEICH wie b |
<= | a <= b | a ist KLEINER als oder GLEICH wie b |
>= | a >= b | a ist GRÖSSER als oder GLEICH wie b |
!= | a!=b | a ist NICHT GLEICH wie b |
Operator | Anwendung | Beschreibung |
---|---|---|
& | a & b | Elementweise UND Operation (arbeiten mit Vektoren) |
| | a | b | Elementweise ODER Operation (arbeiten mit Vektoren) |
! | !a | Elementweise NICHT Operation (arbeiten mit Vektoren) |
&& | a && b | UND Operator, welcher den zweiten Operanden nicht auswertet, wenn der erste Operand ausreicht, um den Wert des Ausdrucks zu bestimmen (‘short-circuit’); wird mehr für Kontrollstrukturen verwendet. |
|| | a || b | ODER Operator (siehe &&) |
Berechnungen in R sind vektorisiert, d.h. die Berechnung wird auf jedes einzelne Element des Vektors angewendet.
Gegeben ist eine Messreihe der Spinnendichte (\(no./m^2\)) auf verschiedenen Inseln im Golf von Kalifornien aus dem Jahre 1992 (aus Studie von Polis et al., 1998).
Nun soll der proportionale Anteil der Dichte pro Insel berechnet werden: \(p_i=\frac{d_i}{\sum(d_i)}\)
00:40
Zur Erinnerung die Formel der Varianz: \(s^{2} = \frac{\sum\limits_{i=1}^{n} \left(x_{i} - \bar{x}\right)^{2}} {n-1}\)
df
im Quiz steht für ‘degrees of freedom’, was im deutschen die Freiheitsgrade sind. Und die betragen bei der Varianz n-1 (die Stichprobengröße oder Länge des Vektors minus 1).
Bei der Teilanweisung x-mean_x
wird der eine Wert in mean_x
auf die Länge von x
recycelt. Anschl. wird der 1. Wert in mean_x
vom 1. Wert in x
, abgezogen, dann der zweite Wert, etc.
Das Ergebnis ist ein Vektor der gleichen Länge wie x
mit den Differenzen, die anschl. quadriert und aufsummiert werden.
… im swirl-Kurs werden Sie direkt an die Hand genommen und Stück für Stück angeleitet.
Dann machen Sie doch gleich weiter mit den anschl. swirl-Kurslektionen!
Bei weiteren Fragen: saskia.otto(at)uni-hamburg.de
Diese Arbeit is lizenziert unter einer Creative Commons Attribution-ShareAlike 4.0 International License mit Ausnahme der entliehenen und mit Quellenangabe versehenen Abbildungen.
Kurswebseite: Data Science 1