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!
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
ycombined_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 deifelse()
es la siguiente:Entonces, en este caso, podemos usar el siguiente código para actualizar los valores en la columna
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 decombined_data$PM_RAMP
acombined_data$PM_base
. Si la condición es falsa, asigna el valor original decombined_data$PM_base
acombined_data$PM_base
.