Stack Overflow en español es un sitio de preguntas y respuestas para programadores y profesionales de la informática. Solo te toma un minuto registrarte.
Regístrate para unirte a esta comunidad
este tiene otros 25,000 objetos distribuidos en 50 categorías con su código y contenidos de magnesio, este dataframe viene de un spatialpixeldataframe que he coercionado al agregar los cod y nombre de categorias para cada pixel, la referencia geográfica no me interesa de momento.
los que necesito es agrupar todos los valores de magnesio en un nuevo objeto según su categoría en columnas para analizar y compararlos, de la siguente manera asi:
tengo entendido que puede realizarse mediante un ciclo y valores únicos en una lista, gracias por su ayuda.
la lista la he creado así:
lis <-list(unique(contsmg$categoria))
y el objeto donde pienso ir agregandolos
mg_uso <- data.frame()
pero el bucle o lo que sea necesario no tengo idea de como realizarlo
for (i in 1:length(lis)) {...
–
–
El siguiente código utiliza dplyr y tidyr para lograr lo que necesitas. Los datos quedan ordenados como aparecen en tu df original.
#Cargamos librerías necesarias
library(tidyr)
library(dplyr)
#Leemos los datos
df <- read.table( text ="
'Mg g/kg' categoria cod
40 bosque 1
50 pastura 2
80 pastura 2
35 urbano 3
", header =T)
# Simulamos datos faltantes y corregimos nombres
df$y <- rnorm(4,15)
df$x <- rnorm(4,90)
names(df)[1]<-'Mg g/kg'
#Pasamos a formato ancho la data usando pivot_wider
#Antes es necesario crear un id para ordenar los datos
#por categoria (grup_by y mutate)
#con select tomamos solo las variables que ocupa pivot_wider
#Por ultimo eliminamos el id.
#Si el número de datos que tiene cada categoría es distinto al
#final de las categorías con un menor numero de datos se llenara con NA.
df%>%
group_by(categoria)%>%
mutate(id = 1:n())%>%
select(id,categoria,'Mg g/kg')%>%
pivot_wider(names_from = categoria, values_from = 'Mg g/kg')%>%
select(-id)
–
–
–
¡Gracias por contribuir en StackOverflow en español con una respuesta!
- Por favor, asegúrate de responder a la pregunta. ¡Proporciona información y comparte tu investigación!
Pero evita…
- Pedir ayuda o aclaraciones, o responder a otras respuestas.
- Hacer declaraciones basadas en opiniones; asegúrate de respaldarlas con referencias o con tu propia experiencia personal.
Para obtener más información, consulta nuestros consejos sobre cómo escribir grandes respuestas.