es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Usando la instrucción IF para comparar los valores de dos columnas, ¿cómo intercambiar el valor de una columna por otro según la declaración?

Tengo un dataframe que se ve como a continuación. Si el valor en la columna PMbase es mayor que el de la columna PMRAMP (fila 15), quiero que el valor en la columna PMbase se revierta al valor de PMRAMP.

He utilizado el siguiente código, sin embargo, no parece estar funcionando y da el siguiente resultado:

la condición tiene longitud > 1 y solo se usará el primer elemento

if (combined_data$PM_base > combined_data$PM_RAMP) {
  combined_data$PM_base == combined_data$PM_RAMP
}

¡Se agradecería la ayuda!

Ver imagen

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución

    El problema con el código es que el if-statement está tratando de comparar dos vectores (combined_data$PM_base y combined_data$PM_RAMP) que tienen una longitud mayor que 1. Esto está causando el mensaje de advertencia “la condición tiene longitud > 1 y solo se utilizará el primer elemento”.

    Para solucionar este problema, podemos utilizar la función ifelse() que nos permite realizar la comparación para cada elemento del vector. La sintaxis de ifelse() es la siguiente:

    ifelse(condición, valor_verdadero, valor_falso)
    

    Entonces, en este caso, podemos usar el siguiente código para actualizar los valores en la columna PM_base:

    combined_data$PM_base <- ifelse(combined_data$PM_base > combined_data$PM_RAMP, combined_data$PM_RAMP, combined_data$PM_base)
    

    Este código verifica si la condición combined_data$PM_base > combined_data$PM_RAMP es verdadera y, si es así, asigna el valor de combined_data$PM_RAMP a combined_data$PM_base. Si la condición es falsa, asigna el valor original de combined_data$PM_base a combined_data$PM_base.

Comments are closed.