slicing

Slicing: Zugriff auf Teile von Datenobjekten

bei Vektoren:

# zwei Datenvektoren:
sex <- c(1,2,2,1,1,1,2,2,2,1,2,2,1,1,1,2,1)
age <- c(15, 17, 22, 32, 12, 18, 24, 34, 23, 22, 29, 15, 17, 20, 21, 23, 19)

# die ersten 5 Alterswerte:
age[1:5]
# die Werte 2, 5, 7-10 des Vektors
age[c(2, 5, 7:10)]

# Bedingter Zugriff (Filter)
# die Werte unter 20
age[age < 20]

# Zugriff kann auch erfolgen über anderen Vektor und Bedingung hieraus (Filter aufgrund anderer Daten)
# alle Werte von age für sex = 1
age[sex == 1]

# auch kombinierte Bedingungen sind möglich
# alle Werte von age > 10 und sex = 2
age[sex == 2 & age > 10]

Slices bei Dataframes

Zugriff auf Spalten

# Beispiel data.frame generieren 
data <-data.frame(
  nr=c(1,2,3,4,5),
  geschl=c('w','m','m','w','w'),
  spass=c(10, 8, 7, 9, 3))

# Zugriff auf einzelne Spalten
# Über den Spaltennamen
# Name data.frame, ein $-Zeichen, Name der Spalte
data$geschl

# oder 
data['geschl']

# oder 
data[,1]

Teilmatrizen, Teil-Dataframes

in der Slice-Klammer mit Komma getrennt Zeilenangabe, Spaltenangabe '[Zeilen, Spalten]'

fehlt eine der beiden Angaben, gilt es für alle

data <-data.frame(
  nr=c(1,2,3,4,5),
  geschl=c('w','m','m','w','w'),
  spass=c(10, 8, 7, 9, 3))

# erste Zeile (Vp 1) zweite Variable (Geschlecht) ausgeben:
data[1,2]

# erste Zeile/Vp ausgeben, alle Variablen
data[1,]

# das geht auch mit dem bedingten Zugriff
# alle Frauen
data[data$geschl == 'w',]
# alle Frauen mit Spass < 10
data[data$geschl == 'w' & data$spass < 10,]