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.

Insertar valores fácilmente en un dataframe en R.

Considere el siguiente data.frame:

df <- data.frame(Industry = c("Agricultura", "Pesca", "Industria"),
                 Valor = c(0,0,0))

Quiero insertar fácilmente un valor en el dataframe. Digamos que quiero el número 1 para “Agricultura”. Por supuesto, en este caso podría hacerlo fácilmente de la siguiente manera:

df <- data.frame(Industry = c("Agricultura", "Pesca", "Industria"),
                 Valor = c(1,0,0))

Pero tengo un data.frame enorme, por lo que no es tan fácil hacerlo. En su lugar, ¿es posible que pueda escribir:

cambio <- c("Agricultura", 1)

Y luego, si hay una coincidencia, actualizará df. ¿Pero cómo hago eso? Debería ser posible para mí cambiar múltiples celdas (por ejemplo, tanto “Agricultura” como “Pesca”) al mismo tiempo.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible actualizar valores en un marco de datos utilizando la función match().

    Para actualizar el valor en el marco de datos df en la fila donde la Industria es “Agricultura” a 1, puedes usar el siguiente código:

    df$Value[match("Agricultura", df$Industry)] <- 1
    

    Este código utiliza la función match() para encontrar el índice de la fila para “Agricultura” en el vector df$Industry, y luego actualiza el valor correspondiente en el vector df$Value a 1.

    Para cambiar varias celdas al mismo tiempo, puedes usar un bucle for o la función lapply para iterar sobre una lista de vectores de cambios. Por ejemplo:

    changes <- list(
      c("Agricultura", 1),
      c("Pesca", 2),
      c("Industria", 3)
    )
    
    for (change in changes) {
      df$Value[match(change[1], df$Industry)] <- change[2]
    }
    

    Este código itera sobre cada vector en la lista changes, encuentra el índice de fila para el valor correspondiente de Industria usando match(), y luego actualiza el valor correspondiente en df$Value usando el valor en el segundo elemento del vector.

Comments are closed.