Inicio › Foros › Etapa I – Raíces Profundas › Error en uno de las hojas de trabajo II23
- Este debate tiene 6 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 1 año por
Jordi.
-
AutorEntradas
-
15 octubre, 2024 a las 21:49 #21082
Miguel Ángel Martínez GarcíaParticipanteHola Jordy,
Es una tontería, pero es lo siguiente:
data_sel = data %>%
select(mpg) %>% # seleccionando variable mpg
filter(mpg>25) %>%No entiendo, como esto tan sencillo no me sale…dice que no encuentra la variable, cuando todos los pasos anteriores si están bien.
Por cierto, estoy yendo muy lento con el programa con R, porque entre los apuntes que tomo, y los viedos largos…es un curso dentro de otro vaya. Estoy bastante retrasado, pero a ver si lo acabo pronto para seguir avanzando.
Gracias.
15 octubre, 2024 a las 22:14 #21083
Miguel Ángel Martínez GarcíaParticipanteTe comento el enunciado de la hoja desde que tengo el problema,que es en todos los pasos. Es como que no me coge bien las variables…
Enunciado:
● Selecciona solo los coches con un mpg más grande que 25
● Selecciona solo los coches con un mpg más grande que 25 y am = 1
● Ordena los coches de mayor a menor en qsec y que sean de am= 0 y gear = 4. ¿Qué coche tiene más qsec?
● Calcula el promedio de wt (peso) por cyl y amTe escribo el código que puse:
library(ISLR)
library(dplyr)
library(tidyr)data <- mtcars
summary(data)nombres_variables = data.frame(Nombre = colnames(data),Num_Columna = seq(ncol(data)))
df_sel = data[seq(from = 5, to=10,by=1),seq(from = 1, to=5,by=1)
]data_sel_1 = data %>%
select(mpg) %>% # seleccionando variable mpg
filter(mpg>25) %>%data_sel_2 = data %>%
select(mpg,am) %>% # seleccionando variable mpg
filter(mpg>25, am==1) %>%data_sel_3 = data %>%
select(am,gear) %>% # seleccionando variable mpg
filter(am==1) %>%
filter(gear==4) %>%
arrange(desc(qsec)) %>%data_sel_4 = data %>%
group_by(cyl,am) %>%
summarize(Mean_wt = mean(wt),desv_wt = sd(wt))17 octubre, 2024 a las 13:16 #21084
JordiSuperadministradorVoy a revisar el código y señalar algunas mejoras para que funcione correctamente en base al enunciado. Aquí van algunas observaciones y ajustes:
1. **Selección de coches con mpg > 25**:
Tu código para esta parte está bien estructurado, pero te faltó cerrar correctamente la cadena de operaciones (%>%) y el nombre del dataframe final no es consistente.2. **Selección de coches con mpg > 25 y am = 1**:
Lo mismo que el paso anterior: el código está bien pero necesitas asegurarte de que esté bien encadenado y el nombre del dataframe sea consistente.3. **Ordenar los coches por qsec con am=0 y gear=4**:
Aquí hay un error en la selección de columnas. Necesitas agregar la columnaqsecen elselect()para que puedas ordenar por esa variable.4. **Calcular el promedio de
wtagrupado porcylyam**:
Este paso parece estar bien, pero no es necesario crear la variable de desviación estándar (sd()), a menos que sea parte de lo que te están pidiendo.Voy a corregir el código para ti:
`r
library(dplyr)data <- mtcars # Selecciona solo los coches con un mpg más grande que 25 data_sel_1 <- data %>%
filter(mpg > 25)# Selecciona solo los coches con un mpg más grande que 25 y am = 1
data_sel_2 <- data %>%
filter(mpg > 25, am == 1)# Ordena los coches de mayor a menor en qsec y que sean de am = 0 y gear = 4
data_sel_3 <- data %>%
filter(am == 0, gear == 4) %>%
arrange(desc(qsec))# ¿Qué coche tiene más qsec?
coche_mas_qsec <- data_sel_3 %>%
slice(1)# Calcula el promedio de wt (peso) por cyl y am
data_sel_4 <- data %>%
group_by(cyl, am) %>%
summarize(Mean_wt = mean(wt), .groups = ‘drop’)
`### Explicación de los cambios:
1. **
data_sel_1**: Se ha usadofilter(mpg > 25)directamente sin usarselect()porque no es necesario para este paso.select()solo selecciona columnas, pero no filtra.2. **
data_sel_2**: Igual que el primer caso, puedes usarfilter()directamente para seleccionar según condiciones, en este casompg > 25yam == 1.3. **
data_sel_3**: Aquí agreguéqsecen el filtro para que puedas ordenar correctamente. Además, añadí el filtro paraam == 0ygear == 4como pide el enunciado, y luego uséarrange(desc(qsec))para ordenar de mayor a menor.4. **
coche_mas_qsec**: Utilicéslice(1)para seleccionar el coche con el valor más alto deqsecdespués de ordenar la tabla.5. **
data_sel_4**: El cálculo del promedio dewtagrupado porcylyames correcto, y he dejado la funciónsummarize()con el.groups = 'drop'para evitar advertencias de agrupación adicionales.Espero que esto solucione tu problema. Si tienes alguna duda adicional, no dudes en preguntar.
17 octubre, 2024 a las 13:17 #21085
JordiSuperadministradorHola,
No te preocupes, es completamente normal que haya pequeños tropiezos al comenzar con R, pero poco a poco irás cogiendo confianza.
Voy a comentarte por qué te puede estar fallando esa parte tan sencilla de tu código. El error más probable es que R no esté «viendo» la columna
mpgcorrectamente en el momento en que usasfilter(). Esto puede pasar si el paso deselect()elimina el contexto deldata.framecompleto y te deja solo con una columna sin el «nombre de variable» quefilter()espera.### Para solucionarlo:
1. **Elimina el
select()si solo quieres filtrar**: No es necesario seleccionar la columna primero para después filtrarla. Si lo haces en ese orden, puedes perder el acceso a otras variables que podrían ser necesarias parafilter(). Elfilter()ya va a trabajar directamente sobre todo el conjunto de datos.2. **Corrige el encadenamiento**: Asegúrate de que el encadenamiento (
%>%) esté completo y que no falte ningún paso. En tu código parece que falta una línea de cierre.### Solución:
`r
# Selecciona solo los coches con un mpg más grande que 25
data_sel <- data %>%
filter(mpg > 25)
`Aquí no es necesario usar
select(). Directamente puedes filtrar usandofilter(mpg > 25).### Explicación:
–filter(mpg > 25)ya te selecciona las filas dondempges mayor que 25.
– Elselect()es útil cuando quieres quedarte solo con ciertas columnas, pero no necesitas seleccionarlas primero si solo vas a filtrar las filas.—
Sobre el tema de estar yendo lento: ¡es completamente normal! Estás aprendiendo una nueva herramienta y cada paso cuenta. Además, es un proceso muy personal y cada quien tiene su propio ritmo. Te recomiendo:
1. **Tomar descansos regulares**: El aprendizaje es mucho más efectivo cuando no estás saturado.
2. **Practicar con ejemplos pequeños**: No te preocupes por hacer todo de golpe. Resuelve problemas pequeños, eso te ayudará a afianzar los conceptos.
3. **No te desesperes**: Los errores son parte del proceso. Cada vez que corriges uno, estás aprendiendo algo valioso.Si sientes que el curso tiene mucho contenido, intenta enfocarte en un paso a la vez. Puedes también priorizar aprender las partes que más necesitas y luego volver a los detalles adicionales.
Si tienes más dudas, no dudes en preguntarme. ¡Ánimo y sigue avanzando!
17 octubre, 2024 a las 22:43 #21089
Miguel Ángel Martínez GarcíaParticipanteMil gracias :):)
Estoy con la otra parte de crear gráficos, que no me sale del todo. Pero lo sigo pensando y si no, creo otro debate. Un saludo.6 noviembre, 2024 a las 22:35 #21175
Miguel Ángel Martínez GarcíaParticipanteLa última función quem e pusiste no sale:
# Calcula el promedio de wt (peso) por cyl y am
data_sel_4 <- data %>%
group_by(cyl, am) %>%
summarize(Mean_wt = mean(wt), .groups = ‘drop’)Sale lo siguiente:
Error: inesperado invalid token in:
» group_by(cyl, am) %>%
summarize(Mean_wt = mean(wt),.groups = ‘»8 noviembre, 2024 a las 8:52 #21182
JordiSuperadministradorEso fue al copiar pegar el codigo me cambió las comillas:
El error ocurre porque las comillas usadas en .groups = ‘drop’ no son las correctas; se están usando comillas tipográficas (‘ ’) en lugar de comillas simples (‘ ‘). En R, es importante que las comillas sean las rectas (‘ o «), no las curvas o tipográficas (‘ o ’).
Aquí tienes el código corregido:
r
Copiar código
# Calcula el promedio de wt (peso) por cyl y am
data_sel_4 <- data %>%
group_by(cyl, am) %>%
summarize(Mean_wt = mean(wt), .groups = ‘drop’)
Explicación:
.groups = ‘drop’: Asegúrate de que las comillas simples sean rectas (‘), ya que R no interpreta correctamente las comillas tipográficas.
Este código debería funcionar sin errores. ¡Prueba y me cuentas! -
AutorEntradas
- Debes estar registrado para responder a este debate.