Cómo escribir una instrucción If Else anidada en R (con ejemplos)

Actualizado por ultima vez el 7 de mayo de 2021, por .

La función ifelse () en la base R se puede usar para escribir declaraciones rápidas if-else. Esta función utiliza la siguiente sintaxis:

ifelse (prueba, sí, no)

dónde:

  • prueba: una prueba lógica
  • sí: el valor que se devolverá si la prueba lógica es verdadera
  • no: el valor que se devolverá si la prueba lógica es falsa

Este tutorial explica cómo usar esta función para escribir declaraciones if else junto con declaraciones if else anidadas en R, usando el siguiente marco de datos:

#create marco de datos
df <- data.frame (equipo = c ('A', 'A', 'B', 'B', 'B', 'C', 'D'),
                 puntos = c (4, 7, 8, 8, 8, 9, 12),
                 rebotes = c (3, 3, 4, 4, 6, 7, 7))

#ver marco de datos
 df

  rebotes de puntos de equipo
1 A 4 3
2 A 7 3
3 B 8 4
4 B 8 4
5 B 8 6
6 C 9 7
7 D 12 7

Ejemplo 1: Cómo escribir una declaración If Else básica

El siguiente código muestra cómo crear una nueva columna en el marco de datos cuyo valor se basa en el valor de la columna ‘equipo’:

#crear una nueva columna en el marco de datos
 df $ rating <- ifelse (df ​​$ team == ' A ', ' great ', ' bad ')

#ver marco de datos
 df

  puntuación de rebotes de puntos de equipo
1 A 4 3 genial
2 A 7 3 genial
3 B 8 4 malo
4 B 8 4 malo
5 B 8 6 malo
6 C 9 7 malo
7 D 12 7 malo

Esta simple declaración ifelse le dice a R que haga lo siguiente:

  • Si el valor en la columna del equipo es ‘A’, entonces déle al jugador una calificación de ‘excelente’.
  • De lo contrario, dale al jugador una calificación de «malo».

Ejemplo 2: Cómo escribir una instrucción If Else anidada

El siguiente código muestra cómo crear una nueva columna en el marco de datos escribiendo una declaración if else anidada:

#crear una nueva columna en el marco de datos
 df $ rating <- ifelse (df ​​$ team == ' A ', ' great ',
                ifelse (df ​​$ team == ' B ', ' OK ', ' bad '))

#ver marco de datos
 df

  puntuación de rebotes de puntos de equipo
1 A 4 3 genial
2 A 7 3 genial
3 B 8 4 OK
4 B 8 4 OK
5 B 8 6 OK
6 C 9 7 malo
7 D 12 7 malo

Esta instrucción ifelse anidada le dice a R que haga lo siguiente:

  • Si el valor en la columna del equipo es ‘A’, entonces déle al jugador una calificación de ‘excelente’.
  • De lo contrario, si el valor en la columna del equipo es ‘B’, entonces déle al jugador una calificación de ‘OK’.
  • De lo contrario, dale al jugador una calificación de «malo».

Ejemplo 3: Cómo escribir declaraciones If más anidadas más largas

El siguiente código muestra cómo crear una nueva columna en el marco de datos escribiendo una declaración if else anidada aún más larga:

#crear una nueva columna en el marco de datos
 df $ rating <- ifelse (df ​​$ team == ' A ', ' great ',
                ifelse (df ​​$ team == ' B ', ' OK ',
                  ifelse (df ​​$ team == ' C ',' decente ',' malo ')))

#ver marco de datos
 df

  puntuación de rebotes de puntos de equipo
1 A 4 3 genial
2 A 7 3 genial
3 B 8 4 OK
4 B 8 4 OK
5 B 8 6 OK
6 C 9 7 decente
7 D 12 7 malo

Esta instrucción ifelse anidada le dice a R que haga lo siguiente:

  • Si el valor en la columna del equipo es ‘A’, entonces déle al jugador una calificación de ‘excelente’.
  • De lo contrario, si el valor en la columna del equipo es ‘B’, entonces déle al jugador una calificación de ‘OK’.
  • De lo contrario, si el valor en la columna del equipo es ‘C’, entonces déle al jugador una calificación de ‘decente’.
  • De lo contrario, dale al jugador una calificación de «malo».

Tenga en cuenta que puede usar este patrón exacto para escribir declaraciones ifelse anidadas todo el tiempo que desee.

Puede encontrar más tutoriales de R aquí .

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

Deja un comentario

A menudo, es posible que desee eliminar marcas de uno o más ejes en una gráfica de Matplotlib. Afortunadamente, esto…
statologos comunidad-2

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

You have Successfully Subscribed!