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.
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:Este código utiliza la función
match()
para encontrar el índice de la fila para “Agricultura” en el vectordf$Industry
, y luego actualiza el valor correspondiente en el vectordf$Value
a 1.Para cambiar varias celdas al mismo tiempo, puedes usar un bucle
for
o la funciónlapply
para iterar sobre una lista de vectores de cambios. Por ejemplo:Este código itera sobre cada vector en la lista
changes
, encuentra el índice de fila para el valor correspondiente de Industria usandomatch()
, y luego actualiza el valor correspondiente endf$Value
usando el valor en el segundo elemento del vector.