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.

Utilizando tidyverse para obtener resultados descriptivos con nest, y luego contar cuántas observaciones tenemos que coinciden con estos criterios.

Digamos que tengo un conjunto de datos de una escuela regular en la que se evalúa a los estudiantes de diferentes áreas de residencia en matemáticas, inglés y ciencias. Necesitas volver a hacer una prueba si tu puntuación está 1 desviación estándar por debajo de la media y suspenderás si tu puntuación está 2 desviaciones estándar por debajo de la media.

Puedo calcular fácilmente las medias, la desviación estándar y estos puntos de corte. Estoy utilizando la función “nest” del paquete “tidyverse”. Sin embargo, me gustaría saber cuántos estudiantes estaban 1 desviación estándar por debajo y 2 desviaciones estándar por debajo de la media.

Sin embargo, no sé cómo hacer estos cálculos de “count” para estos resultados de manera fácil.

Por favor, revisa el conjunto de datos y el código que estoy utilizando para obtener los resultados descriptivos:

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para contar cuántos estudiantes estuvieron 1SD por debajo y 2SD por debajo de la media, podemos utilizar las funciones map y sum del paquete purrr. Aquí está el código actualizado:

    “`{r}
    library(tidyverse)
    library(purrr) # cargar el paquete purrr

    set.seed(123)
    ds <- data.frame(quest = c(2,4,6),
    living_area = c(“rural”,”urban”,”mixed”),
    math_sum = rnorm(120, 10,1),
    english_sum = rnorm(120, 10,1),
    science_sum = rnorm(120, 10,1)
    )

    ds %>%
    select(quest, ends_with(“sum”)) %>% # obtener los nombres de las variables
    pivot_longer(-quest) %>% # transformar al formato largo
    nest_by(quest, name) %>% # anidar
    mutate(
    n = map_dbl(data, ~nrow(data.frame(.))), # calcular el tamaño de la muestra
    mean = map_dbl(data, ~mean(.)), # obtener las medias
    sd = map_dbl(data, ~sd(.)), # obtener la desviación estándar
    below = mean-sd, # 1 por debajo
    failed = mean-2*sd,
    count_below = map_dbl(data, ~sum(.x <= below)), # contar los puntajes 1SD por debajo de la media
    count_failed = map_dbl(data, ~sum(.x <= failed)) # contar los puntajes 2SD por debajo de la media
    )
    “`

    Esto agrega dos nuevas columnas al dataframe de salida: count_below y count_failed, que muestran cuántos estudiantes obtuvieron un puntaje 1SD por debajo y 2SD por debajo de la media, respectivamente.

Comments are closed.