Cómo usar Mutate para crear nuevas variables en R

Este tutorial explica cómo usar la función mutate () en R para agregar nuevas variables a un marco de datos.

Agregar nuevas variables en R

Las siguientes funciones de la biblioteca dplyr se pueden usar para agregar nuevas variables a un marco de datos:

mutate () : agrega nuevas variables a un marco de datos mientras conserva las variables existentes

transmutar () : agrega nuevas variables a un marco de datos y elimina las variables existentes

mutate_all () : modifica todas las variables en un marco de datos a la vez

mutate_at () – modifica variables específicas por nombre

mutate_if () : modifica todas las variables que cumplen una determinada condición

mudar()

La función mutate () agrega nuevas variables a un marco de datos mientras conserva las variables existentes.La sináxis básica para mutate () es la siguiente:

datos <- mutar (nueva_variable = existente_variable / 3)
  • datos: el nuevo marco de datos para asignar las nuevas variables a
  • new_variable: el nombre de la nueva variable
  • existente_variable: la variable existente en el marco de datos en la que desea realizar alguna operación para crear la nueva variable

Por ejemplo, el siguiente código ilustra cómo agregar una nueva variable root_sepal_width al conjunto de datos de iris incorporado :

#define el marco de datos como las primeras seis líneas del conjunto de datos del iris
datos <- cabeza (iris)

#ver datos
datos

# Sepal.Length Sepal.Width Petal.Length Petal.Width Especies
# 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

#load dplyr biblioteca 
biblioteca (dplyr)

#define nueva columna root_sepal_width como la raíz cuadrada de la Sepal.Width variable de 
datos%>% mutar (root_sepal_width = sqrt (Sepal.Width))

# Sepal.Length Sepal.Width Petal.Length Petal.Width Especies 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

transmutar()

La función transmute () agrega nuevas variables a un marco de datos y elimina las variables existentes. El siguiente código ilustra cómo agregar dos nuevas variables a un conjunto de datos y eliminar todas las variables existentes:

#define el marco de datos como las primeras seis líneas de los datos del conjunto de
 datos del iris <- cabeza (iris)

#ver datos de
 datos

# Sepal.Length Sepal.Width Petal.Length Petal.Width Especies
# 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

# definir dos nuevas variables y eliminar todas las variables existentes
 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

mutate_all ()

La función mutate_all () modifica todas las variables en un marco de datos a la vez, lo que le permite realizar una función específica en todas las variables mediante el uso de la función funs () . El siguiente código ilustra cómo dividir todas las columnas en un marco de datos por 10 usando mutate_all () :

#definir el nuevo marco de datos como las primeras seis filas de iris sin la variable Species
data2 <- head (iris)%>% select (-Species)

#ver el nuevo marco de datos
datos2

# 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

#divide todas las variables en el marco de datos por 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

Tenga en cuenta que se pueden agregar variables adicionales al marco de datos especificando un nuevo nombre que se agregará al nombre de la variable anterior:

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

mutate_at ()

La función mutate_at () modifica variables específicas por nombre. El siguiente código ilustra cómo dividir dos variables específicas por 10 usando mutate_at () :

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
N.º 3 0,32
N.º 4 0,31
N.º 5 0,36
N.º 6 0,39

mutate_if ()

La función mutate_if () modifica todas las variables que cumplen una determinada condición. El siguiente código ilustra cómo usar la función mutate_if () para convertir cualquier variable de factor de tipo en carácter de tipo :

# encontrar el tipo de variable de cada variable en un marco de datos
datos <- cabeza (iris)
sapply (datos, clase)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Especies 
# "numérico" "numérico" "numérico" "numérico" "factor" 

#convertir cualquier variable de factor de tipo en carácter de tipo
new_data <- data%>% mutate_if (is.factor, as.character)
sapply (nuevos_datos, clase)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Especies 
# "numérico" "numérico" "numérico" "numérico" "carácter"

El siguiente código ilustra cómo usar la función mutate_if () para redondear cualquier variable de tipo numérico a un lugar decimal:

# definir datos como las primeras seis filas del conjunto de datos de iris
datos <- cabeza (iris)

#ver datos
datos

# Sepal.Length Sepal.Width Petal.Length Petal.Width Especies
# 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

# redondear las variables de tipo numérico a un decimal
datos%>% mutate_if (es numérico, redondo, dígitos = 0)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Especies
# 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

Más información:
Una guía para aplicar (), lapply (), sapply () y tapply () en R
Cómo organizar filas en R
Cómo filtrar filas en R

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

En la teoría de la probabilidad, la ley de la probabilidad total es una forma útil de encontrar la probabilidad…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!