Skip to content

[R-es] función IF

3 messages · Belén Cillero Jiménez, Javier Marcuzzi, Bartolomé Marcos, José Antonio

#
Buenas noches
Escribo la siguiente sintaxis para crear la variable epa_web$DTANque va a tomar valores entre10 y 8:

epa_web$DTAN<-' '

if ((epa_web$DTANT<1) && (epa_web$DTANT!=' ')){
  epa_web$DTAN<-1
  } else if ((epa_web$DTANT>=1) && (epa_web$DTANT<3))
  {epa_web$DTAN<-2
  } else if ((epa_web$DTANT>=3) && (epa_web$DTANT<6))
    {epa_web$DTAN<-3
  }else if ((epa_web$DTANT>=6) && (epa_web$DTANT<12))
      {epa_web$DTAN<-4
  }else if ((epa_web$DTANT>=12) && (epa_web$DTANT<18))
        {epa_web$DTAN<-5
  }else if ((epa_web$DTANT>=18) && (epa_web$DTANT<24))
          {epa_web$DTAN<-6
  }else if ((epa_web$DTANT>=24) && (epa_web$DTANT<48))
            {epa_web$DTAN<-7
  }else if (epa_web$DTANT>=48)
  {epa_web$DTAN<-8}

y el resultado que obtengo es que la variable nueva solo toma el valor 1
¿Qué es lo que estoy haciendo mal?
Muchas gracias a todos.
Un saludo,


Belén Cillero Jiménez

Técnico de Estadística

Instituto de Estadística de La Rioja



bcillero en larioja.org<mailto:bcillero en larioja.org>

o?s?? ol ??d???s s???? ou ,so?u??s?p sop??lns?? s??snq ?S

________________________________

GOBIERNO DE LA RIOJA
AVISO LEGAL: La información contenida en este mensaje es confidencial y está destinada a ser leída sólo por la persona a la que va dirigida. Si Ud. no es el destinatario señalado le informamos que está prohibida, y puede ser ilegal, cualquier divulgación o reproducción de este mensaje.
Antes de imprimir este e-mail piense bien si es necesario hacerlo.
#
Estimada Belén Cillero Jiménez

El problema es simple, hay que escribirlo nuevamente.

Yo al realizar algo con if escribo el primero y pruebo, escribo el segundo
y pruebo, voy paso por paso, sobre todo si utilizo if, si lo realizo de
otra forma escribo todo junto sin drama, pero if crea esos casos que uno
por distracción plantea mal.

Mire lo siguiente y evalué la forma que cree más conveniente para su
trabajo, reescriba probando el primer caso y todos los restantes con una
constante, luego el primero y segundo, y así solucione el inconveniente de
la forma que usted cree adecuada.

https://www.datamentor.io/r-programming/if-else-statement/

Saludos
Javier Rubén Marcuzzi

El mar., 13 nov. 2018 a las 18:15, Belén Cillero Jiménez (<
bcillero en larioja.org>) escribió:

  
  
#
Entiendo que epa_WEB es un data.frame. La función if solo actúa sobre un elemento,  no sobre un vector (para ello tendrías que utilizar ifelse()).
Creo que puedes hacer la asignación más sencilla si recurrir a un if.

Si ya existe en el data.frame  epa_WEB la variable DTAN entonces:

  epa_web$DTAN[(epa_web$DTANT<1) && (epa_web$DTANT!=' ')] <-  1
  epa_web$DTAN[(epa_web$DTANT>=1) && (epa_web$DTANT<3)] <-  2
....
y así con el resto.



-----Mensaje original-----
De: R-help-es [mailto:r-help-es-bounces en r-project.org] En nombre de Belén Cillero Jiménez
Enviado el: martes, 13 de noviembre de 2018 22:12
Para: r-help-es en r-project.org
Asunto: [R-es] función IF


Buenas noches
Escribo la siguiente sintaxis para crear la variable epa_web$DTANque va a tomar valores entre10 y 8:

epa_web$DTAN<-' '

if ((epa_web$DTANT<1) && (epa_web$DTANT!=' ')){
  epa_web$DTAN<-1
  } else if ((epa_web$DTANT>=1) && (epa_web$DTANT<3))
  {epa_web$DTAN<-2
  } else if ((epa_web$DTANT>=3) && (epa_web$DTANT<6))
    {epa_web$DTAN<-3
  }else if ((epa_web$DTANT>=6) && (epa_web$DTANT<12))
      {epa_web$DTAN<-4
  }else if ((epa_web$DTANT>=12) && (epa_web$DTANT<18))
        {epa_web$DTAN<-5
  }else if ((epa_web$DTANT>=18) && (epa_web$DTANT<24))
          {epa_web$DTAN<-6
  }else if ((epa_web$DTANT>=24) && (epa_web$DTANT<48))
            {epa_web$DTAN<-7
  }else if (epa_web$DTANT>=48)
  {epa_web$DTAN<-8}

y el resultado que obtengo es que la variable nueva solo toma el valor 1 ¿Qué es lo que estoy haciendo mal?
Muchas gracias a todos.
Un saludo,


Belén Cillero Jiménez

Técnico de Estadística

Instituto de Estadística de La Rioja



bcillero en larioja.org<mailto:bcillero en larioja.org>

o?s?? ol ??d???s s???? ou ,so?u??s?p sop??lns?? s??snq ?S

________________________________

GOBIERNO DE LA RIOJA
AVISO LEGAL: La información contenida en este mensaje es confidencial y está destinada a ser leída sólo por la persona a la que va dirigida. Si Ud. no es el destinatario señalado le informamos que está prohibida, y puede ser ilegal, cualquier divulgación o reproducción de este mensaje.
Antes de imprimir este e-mail piense bien si es necesario hacerlo.


_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es