Eine Anleitung für apply(), lapply(), sapply() und tapply() in R

Von Fabian
Kategorie: R
Tags: Operationen
Lesezeit: 6 Minuten

In diesem Tutorial werden die Unterschiede zwischen den integrierten R-Funktionen apply(), sapply(), lapply() und tapply() sowie Beispiele für die Verwendung der einzelnen Funktionen erläutert.

apply()

Verwenden Sie die Funktion apply(), wenn Sie eine Funktion auf die Zeilen oder Spalten einer Matrix oder eines Dataframes anwenden möchten.

Die grundlegende Syntax für die Funktion apply() lautet wie folgt:

apply(X, MARGIN, FUN)

  • X ist der Name der Matrix oder des Dataframes
  • MARGIN gibt an, über welche Dimension eine Operation ausgeführt werden soll (1 = Zeile, 2 = Spalte).
  • FUN ist die spezifische Operation, die Sie ausführen möchten (z. B. min, max, sum, mean usw.).

Der folgende Code zeigt einige Beispiele für apply() in Aktion.

#Erstellen Sie ein Dataframe mit drei Spalten und fünf Zeilen
data <- data.frame (a = c (1, 3, 7, 12, 9),
                   b = c (4, 4, 6, 7, 8),
                   c = c (14, 15, 11, 10, 6))
data

#    a b  c
# 1  1 4 14
# 2  3 4 15
# 3  7 6 11
# 4 12 7 10
# 5  9 8  6

#Finden Sie die Summe jeder Zeile
apply(data, 1, sum)

# [1] 19 22 24 29 23

#Finden Sie die Summe jeder Spalte
apply(data, 2, sum)

#  a  b  c
# 32 29 56 

#Finden Sie den Mittelwert jeder Zeile
apply(data, 1, mean)

# [1] 6.333333 7.333333 8.000000 9.666667 7.666667

#Finden Sie den Mittelwert jeder Spalte, auf eine Dezimalstelle gerundet
round(apply(data, 2, mean), 1)

#   a   b    c
# 6.4 5.8 11.2 

#Finden Sie die Standardabweichung jeder Zeile
apply(data, 1, sd)

# [1] 6.806859 6.658328 2.645751 2.516611 1.527525

#Finden Sie die Standardabweichung jeder Spalte
apply(data, 2, sd)

#        a        b        c
# 4.449719 1.788854 3.563706 

lapply()

Verwenden Sie die Funktion lapply(), wenn Sie eine Funktion auf jedes Element einer Liste, eines Vektors oder eines Dataframes anwenden und als Ergebnis eine Liste erhalten möchten.

Die grundlegende Syntax für die Funktion lapply() lautet wie folgt:

lapply (X, FUN)

  • X ist der Name der Liste, des Vektors oder des Dataframes
  • FUN ist die spezifische Operation, die Sie ausführen möchten

Der folgende Code zeigt einige Beispiele für die Verwendung von lapply() in den Spalten eines Datenframes.

#Erstellen Sie ein Datenframe mit drei Spalten und fünf Zeilen
data <- data.frame (a = c (1, 3, 7, 12, 9),
                   b = c (4, 4, 6, 7, 8),
                   c = c (14, 15, 11, 10, 6))
data

#    a b c
# 1  1 4 14
# 2  3 4 15
# 3  7 6 11
# 4 12 7 10
# 5  9 8 6

#Finden Sie den Mittelwert jeder Spalte und geben Sie die Ergebnisse als Liste zurück
lapply(data, mean)

# $a
# [1] 6.4
#
# $b
# [1] 5.8
#
# $c
# [1] 11.2

# Multiplizieren Sie die Werte in jeder Spalte mit 2 und geben Sie die Ergebnisse als Liste zurück
lapply(data, function(data) data*2)

# $a
# [1] 2 6 14 24 18
#
# $b
# [1] 8 8 12 14 16
#
# $c
# [1] 28 30 22 20 12

Wir können auch lapply() verwenden, um Operationen an Listen auszuführen. Die folgenden Beispiele zeigen, wie das geht.

#Erstellen Sie eine Liste
x <- list(a=1, b=1:5, c=1:10) 
x

# $a
# [1] 1
#
# $b
# [1] 1 2 3 4 5
#
# $c
# [1] 1 2 3 4 5 6 7 8 9 10

#Finden Sie die Summe aller Elemente in der Liste
lapply(x, sum)

# $a
# [1] 1
#
# $b
# [1] 15
#
# $c
# [1] 55

#Finden Sie den Mittelwert jedes Elements in der Liste
lapply(x, mean)

# $a
# [1] 1
#
# $b
# [1] 3
#
# $c
# [1] 5.5

# Multiplizieren Sie die Werte jedes Elements mit 5 und geben Sie die Ergebnisse als Liste zurück
lapply(x, function(x) x*5)

# $a
# [fünfzehn
#
# $b
# [1] 5 10 15 20 25
#
# $c
# [1] 5 10 15 20 25 30 35 40 45 50

sapply()

Verwenden Sie die Funktion sapply(), wenn Sie eine Funktion auf jedes Element einer Liste, eines Vektors oder eines Datenframes anwenden und als Ergebnis einen Vektor anstelle einer Liste erhalten möchten.

Die grundlegende Syntax für die Funktion sapply() lautet wie folgt:

sapply (X, FUN)

  • X ist der Name der Liste, des Vektors oder des Dataframes
  • FUN ist die spezifische Operation, die Sie ausführen möchten

Der folgende Code zeigt einige Beispiele für die Verwendung von sapply() in den Spalten eines Datenframes.

#Erstellen Sie ein Dataframe mit drei Spalten und fünf Zeilen
data <- data.frame(a = c (1, 3, 7, 12, 9),
                   b = c (4, 4, 6, 7, 8),
                   c = c (14, 15, 11, 10, 6))
data

#    a b  c
# 1  1 4 14
# 2  3 4 15
# 3  7 6 11
# 4 12 7 10
# 5  9 8 6

#Mittelwert jeder Spalte finden und Ergebnisse als Vektor zurückgeben
sapply(data, mean)

#   a   b    c
# 6.4 5.8 11.2 

#Multiplizieren Sie die Werte in jeder Spalte mit 2 und geben Sie die Ergebnisse als Matrix zurück
sapply(data, function(data) data*2)

#      a   b  c
# [1,]  2  8 28
# [2,]  6  8 30
# [3,] 14 12 22
# [4,] 24 14 20
# [5,] 18 16 12

Wir können auch sapply() verwenden, um Operationen an Listen auszuführen. Die folgenden Beispiele zeigen, wie das geht.

#Erstelle eine Liste
x <- list(a=1, b=1:5, c=1:10) 
x

# $a
# [1] 1
#
# $b
# [1] 1 2 3 4 5
#
# $c
# [1] 1 2 3 4 5 6 7 8 9 10

#Finden Sie die Summe aller Elemente in der Liste
sapply(x, sum)

# a  b  c
# 1 15 55 

#Finden Sie den Mittelwert jedes Elements in der Liste
sapply(x, mean)

#   a   b   c
# 1.0 3.0 5.5

tapply()

Verwenden Sie die Funktion tapply(), wenn Sie eine Funktion auf Teilmengen eines Vektors anwenden möchten und die Teilmengen durch einen anderen Vektor definiert werden, normalerweise einen Faktor.

Die grundlegende Syntax für die Funktion tapply() lautet wie folgt:

tapply (X, INDEX, FUN)

  • X ist der Name des Objekts, normalerweise ein Vektor
  • INDEX ist eine Liste von einem oder mehreren Faktoren
  • FUN ist die spezifische Operation, die Sie ausführen möchten

Der folgende Code zeigt ein Beispiel für die Verwendung von tapply() für das integrierte R-Dataset iris.

#Die ersten sechs Zeilen des Iris-Datensatzes anzeigen
head(iris)

#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4         0.2  setosa
#2          4.9         3.0          1.4         0,2  setosa
#3          4.7         3.2          1.3         0,2  setosa
#4          4.6         3.1          1.5         0.2  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4         3.9          1.7         0.4  setosa

#Finden Sie die maximale Sepal.Länge jeder der drei Arten
tapply(iris$Sepal.Length, iris$Species, max)

# setosa versicolor virginica 
#    5.8        7.0       7.9 

#Finden Sie die mittlere Sepal.Width jeder der drei Arten
tapply(iris$Sepal.Width, iris$Species, mean)

# setosa versicolor virginica 
#  3.428      2.770     2.974 

#Finden Sie das minimale Blütenblatt. Breite jeder der drei Arten
tapply(iris$Petal.Width, Iris$Species, min)

# setosa versicolor virginica 
#    0.1        1.0       1.4 
Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: