Oft möchten Sie möglicherweise die Anzahl der Beobachtungen (oder Zeilen) nach Gruppen in R zählen. Glücklicherweise ist dies mit der Funktion count() aus der dplyr-Bibliothek einfach zu bewerkstelligen.
library …
In diesem Tutorial wird erläutert, wie Sie mit der Funktion mutate() in R neue Variablen zu einem Dataframe hinzufügen.
Die folgenden Funktionen aus der dplyr-Bibliothek können verwendet werden, um einem Dataframe neue Variablen hinzuzufügen:
mutate() - Fügt einem Dataframe neue Variablen hinzu, während vorhandene Variablen beibehalten werden
transmute() - fügt einem Dataframe neue Variablen hinzu und löscht vorhandene Variablen
mutate_all() - Ändert alle Variablen in einem Dataframe gleichzeitig
mutate_at() - Ändert bestimmte Variablen nach Namen
mutate_if() - Ändert alle Variablen, die eine bestimmte Bedingung erfüllen
Die Funktion mutate() fügt einem Dataframe neue Variablen hinzu, wobei vorhandene Variablen erhalten bleiben. Die grundlegende Synax für mutate() lautet wie folgt:
data <- mutate(new_variable = existing_variable/3)
Der folgende Code zeigt beispielsweise, wie Sie dem integrierten Iris-Dataset eine neue Variable root_sepal_width hinzufügen:
#Definieren Sie das Dataframe als die ersten sechs Zeilen des Iris- Datasets
data <- head(iris)
#Daten anzeigen
data
# 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
#laden der dplyr Bibliothek
library(dplyr)
# Definieren Sie die neue Spalte root_sepal_width als Quadratwurzel der Sepal.Width-Variablen
data %>% mutate(root_sepal_width = sqrt(Sepal.Width))
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species root_sepal_width
#1 5.1 3.5 1.4 0.2 setosa 1.870829
#2 4.9 3.0 1.4 0.2 setosa 1.732051
#3 4.7 3.2 1.3 0.2 setosa 1.788854
#4 4.6 3.1 1.5 0.2 setosa 1.760682
#5 5.0 3.6 1.4 0.2 setosa 1.897367
#6 5.4 3.9 1.7 0.4 setosa 1.974842
Die Funktion transmute() fügt einem Dataframe neue Variablen hinzu und löscht vorhandene Variablen. Der folgende Code zeigt, wie Sie einem Datensatz zwei neue Variablen hinzufügen und alle vorhandenen Variablen entfernen:
#Definieren Sie das Dataframe als die ersten sechs Zeilen des Iris-Datasets
data <- head(iris)
#Daten anzeigen
data
# 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
#Definieren Sie zwei neue Variablen und entfernen Sie alle vorhandenen Variablen
data %>% transmute(root_sepal_width = sqrt(Sepal.Width),
root_petal_width = sqrt(Petal.Width))
# root_sepal_width root_petal_width
#1 1.870829 0.4472136
#2 1.732051 0.4472136
#3 1.788854 0.4472136
#4 1.760682 0.4472136
#5 1.897367 0.4472136
#6 1.974842 0.6324555
Die mutate_all()-Funktion ändert sofort alle Variablen in einem Dataframe, in dem Sie unter Verwendung der funs()-Funktion, um eine bestimmte Funktion auf alle Variablen durchzuführen. Der folgende Code veranschaulicht, wie alle Spalten in einem Dataframe mit mutate_all() durch 10 geteilt werden:
# Definieren Sie ein neues Dataframe als die ersten sechs Iriszeilen ohne die Variable Species
data2 <- head(iris) %>% select(-Species)
# den neuen Dataframe anzeigen
data2
# Sepal.Length Sepal.Width Petal.Length Petal.Width
#1 5.1 3.5 1.4 0.2
#2 4.9 3.0 1.4 0.2
#3 4.7 3.2 1.3 0.2
#4 4.6 3.1 1.5 0.2
#5 5.0 3.6 1.4 0.2
#6 5.4 3.9 1.7 0.4
# Teilen Sie alle Variablen im Dataframe durch 10
data2 %>% mutate_all(funs(./10))
# Sepal.Length Sepal.Width Petal.Length Petal.Width
#1 0.51 0.35 0.14 0.02
#2 0.49 0.30 0.14 0.02
#3 0.47 0.32 0.13 0.02
#4 0.46 0.31 0.15 0.02
#5 0.50 0.36 0.14 0.02
#6 0.54 0.39 0.17 0.04
Beachten Sie, dass dem Dataframe zusätzliche Variablen hinzugefügt werden können, indem ein neuer Name angegeben wird, der an den alten Variablennamen angehängt werden soll:
data2 %>% mutate_all(funs(mod = ./10))
# Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length_mod
#1 5.1 3.5 1.4 0.2 0.51
#2 4.9 3.0 1.4 0.2 0.49
#3 4.7 3.2 1.3 0.2 0.47
#4 4.6 3.1 1.5 0.2 0.46
#5 5.0 3.6 1.4 0.2 0.50
#6 5.4 3.9 1.7 0.4 0.54
# Sepal.Width_mod Petal.Length_mod Petal.Width_mod
#1 0.35 0.14 0.02
#2 0.30 0.14 0.02
#3 0.32 0.13 0.02
#4 0.31 0.15 0.02
#5 0.36 0.14 0.02
#6 0.39 0.17 0.04
Die Funktion mutate_at() ändert bestimmte Variablen nach Namen. Der folgende Code zeigt, wie Sie mit mutate_at() zwei bestimmte Variablen durch 10 teilen:
data2 %>% mutate_at(c("Sepal.Length", "Sepal.Width"), funs(mod = ./10))
# Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length_mod
#1 5.1 3.5 1.4 0.2 0.51
#2 4.9 3.0 1.4 0.2 0.49
#3 4.7 3.2 1.3 0.2 0.47
#4 4.6 3.1 1.5 0.2 0.46
#5 5.0 3.6 1.4 0.2 0.50
#6 5.4 3.9 1.7 0.4 0.54
# Sepal.Width_mod
#1 0.35
#2 0.30
#3 0.32
#4 0.31
#5 0.36
#6 0.39
Die Funktion mutate_if() ändert alle Variablen, die eine bestimmte Bedingung erfüllen. Der folgende Code zeigt, wie die mutate_if()-Funktion verwenden, um alle Variablen vom Typ factor zum Typ character zu konvertieren:
#Variablentyp jeder Variablen in einem Dataframe finden
data <- head(iris)
sapply(data, class)
#Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# "numeric" "numeric" "numeric" "numeric" "factor"
#jede Variable vom Typ factor zum Typ character konvertieren
new_data <- data %>% mutate_if(is.factor, as.character)
sapply(new_data, class)
#Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# "numeric" "numeric" "numeric" "numeric" "character"
Der folgende Code veranschaulicht die Verwendung der Funktion mutate_if(), um Variablen vom Typ numeric auf eine Dezimalstelle zu runden:
#Definieren Sie Daten als erste sechs Zeilen des Iris- Datasets
data <- head(iris)
#Daten anzeigen
data
# 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
#runden Sie alle Variablen vom Typ numerisch auf eine Dezimalstelle
data %>% mutate_if(is.numeric, round, digits = 0)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5 4 1 0 setosa
#2 5 3 1 0 setosa
#3 5 3 1 0 setosa
#4 5 3 2 0 setosa
#5 5 4 1 0 setosa
#6 5 4 2 0 setosa
Weiterführende Literatur:
Eine Anleitung zum Anwenden(), lapply(), sapply() und tapply() in R
So ordnen Sie Zeilen in R
Oft möchten Sie möglicherweise die Anzahl der Beobachtungen (oder Zeilen) nach Gruppen in R zählen. Glücklicherweise ist dies mit der Funktion count() aus der dplyr-Bibliothek einfach zu bewerkstelligen.
library …