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.

Cómo agregar puntos de datos individuales después de una revisión de gráfico en R

Estoy tratando de agregar mis nuevos datos recolectados de una revisión de gráficos a mi base de datos, pero no estoy logrando hacerlo.

He intentado programar una nueva variable y luego usar una función lógica para elegir qué dato utilizar, pero usar una variable completa no funciona, ya que es un vector y no un único punto de datos. ¿Cómo puedo programarlo para usar el punto de datos de la misma observación pero de una variable diferente?

mydf <- structure(list(Year = c(2014L, 2014L, 2015L, 2015L, 2016L),
                       Var1 = c(15, 12, 2, 16, NA), 
                       Var2 = c(15, 13, 104, NA, NA), 
                       Agree = c(1, 0, 0, 1, 1)), 
                  .Names = c("Year",  "Var1", "Var2", "Agree"), 
                  row.names = c(NA, 5L), class = "data.frame")

mydf$true <- if_else(mydf$Agree == 1, mydf$Var1, mydf$Var2) 

Mensaje de error:

Error: true must be length 0 (length of condition) or one, not 5.

Ejecuta rlang::last_error() para ver dónde se produjo el error.

Lo que quiero:

mydf

Resultado esperado:

  Year Var1 Var2 Agree True
1 2014   15   15     1   15
2 2014   13   12     0   12
3 2015    2  104     0  104
4 2015   16   NA     1   16
5 2016   NA   NA     1   NA

¿Alguna idea?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la función if_else() que devuelve un vector en lugar de un único dato. En su lugar, puedes usar la función ifelse(), que funciona elemento por elemento y devolverá un vector de la misma longitud que la condición. Aquí tienes cómo puedes modificar el código:

    {r}
    mydf$true <- ifelse(mydf$Agree == 1, mydf$Var1, mydf$Var2)

    Esto debería darte el resultado deseado.

Comments are closed.