Inicio › Foros › Etapa I – Raíces Profundas › Tarea 15 – Los paquetes esenciales de R
- Este debate tiene 3 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 2 años, 4 meses por
Maripaz Jiménez Guerrero.
-
AutorEntradas
-
24 marzo, 2024 a las 23:23 #17857
Maripaz Jiménez GuerreroParticipanteHola adjunto la tarea 15 sobre la manipulación de dataframes y la creación de gráficos en R.
Tengo un par de dudas:
1- Realizando el ejercicio del cálculo de los promedios de «wt» en función de «cyl» y «am».
En tu vídeo cuando explicabas esta parte, comentabas que para usar la función «group_by» la variable de agrupación debe ser un factor. Sin embargo en este caso ni «cyl» ni «am» lo son. ¿Tendría que transformarlas antes? Cuando lo he corrido, no me ha saltado ningún warning (que sin embargo más adelante para hacer los gráficos, sí que me ha saltado y he tenido que transformar «am» en un factor); me resulta un poco confuso que unas veces sí y otras no, o yo no estoy viendo la diferencia, ¿me lo aclaras?2- He incluido la segunda duda en la hoja de trabajo, que creo que es más cómodo exponerla sobre el gráfico.
Gracias de antemano!
Un saludo,
MP26 marzo, 2024 a las 10:50 #17865
JordiSuperadministradorEntiendo tu confusión. En R, la función group_by() de dplyr puede trabajar con variables tanto factor como no factor (como números o cadenas de texto). La confusión puede surgir porque el tratamiento de las variables en R puede cambiar dependiendo del contexto y de la función específica que estés utilizando.
Veamos en detalle:
Uso de group_by con Factores y No Factores: La función group_by() agrupa los datos basándose en los valores únicos de las variables especificadas. No es necesario que estas variables sean factores; pueden ser de cualquier tipo, como numéricas o caracteres. En tu caso, aunque cyl y am no sean factores, group_by() funcionará correctamente agrupando los datos según los valores únicos de estas variables.
¿Por qué a veces es necesario convertir a factores? En algunas funciones y tipos de análisis, especialmente en gráficos, la conversión a factores puede ser útil o necesaria. Por ejemplo, en la creación de gráficos, convertir una variable en factor permite un mejor control sobre el orden y la representación de los grupos en el eje. Además, en análisis estadísticos, convertir variables numéricas en factores puede cambiar la forma en que se tratan en el modelo (por ejemplo, como categorías en lugar de valores continuos).
Ejemplo de group_by en tu Caso: En tu caso específico, estás calculando promedios de wt agrupados por cyl y am. Aquí no necesitas convertir estas variables en factores para que group_by() funcione. El código podría verse así:
R
Copy code
library(dplyr)# Asumiendo que estás trabajando con el dataset ‘mtcars’
mtcars %>%
group_by(cyl, am) %>%
summarize(mean_wt = mean(wt))
Este código agrupará los datos por los valores únicos de cyl y am (sin importar si son factores o no) y calculará la media de wt para cada grupo.Recuerda que R es un lenguaje flexible y las necesidades de conversión a factores pueden variar según el contexto y la función que estés utilizando. En la práctica, si tu código funciona correctamente sin warnings y los resultados son los esperados, es probable que estés utilizando las funciones de manera adecuada para tus datos
26 marzo, 2024 a las 10:51 #17866
JordiSuperadministradorlA OTRA DUDA:
Tu código para generar el gráfico de barras parece estar bien estructurado, pero el problema que mencionas de «overlapping» (sobrelapamiento) de las barras es común cuando se utilizan gráficos de barras para mostrar múltiples grupos en las mismas categorías.
El problema aquí es que estás usando barras colocadas en las mismas posiciones del eje Y para diferentes grupos de am. Una forma común de abordar esto es usar barras agrupadas o apiladas. Sin embargo, dado que estás mapeando y=cyl y fill=am, la mejor opción podría ser un gráfico de barras agrupadas, donde las barras para diferentes valores de am están una al lado de la otra en lugar de superponerse.
Aquí te dejo una sugerencia para modificar tu código:
Usar Posición Ajustada: Puedes ajustar la posición de las barras para que se coloquen una al lado de la otra usando position = position_dodge() en geom_bar().
Ajustar la Anchura de las Barras: Puedes necesitar jugar un poco con el parámetro width en geom_bar() y position_dodge() para obtener una presentación visual que te satisfaga.
El código modificado sería algo así:
R
Copy code
library(dplyr)
library(ggplot2)data_sel2 = data %>%
group_by(cyl, am) %>%
summarize(Mean_wt = mean(wt))p3 <- ggplot(data_sel2, aes(x=as.factor(cyl), y=Mean_wt, fill=as.factor(am))) + geom_bar(stat="identity", position=position_dodge(width=0.8), width=0.7) + labs(title="Barplot de promedios de peso en función de cyl y am", x="Cilindrada", y="Promedio peso") + theme_classic() p3 En este código, position_dodge(width=0.8) ayuda a separar las barras para diferentes valores de am dentro de cada categoría de cyl. El parámetro width=0.7 controla la anchura de las barras individuales. Puedes ajustar estos valores según sea necesario para mejorar la visualización. Además, he convertido cyl y am en factores en el mapeo aes(), ya que esto suele ser más adecuado para variables categóricas en un gráfico de barras.
2 abril, 2024 a las 18:12 #17879
Maripaz Jiménez GuerreroParticipanteGenial Jordi, muchas gracias!!
Un saludo!
MP -
AutorEntradas
- Debes estar registrado para responder a este debate.