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:
davy.ai
Para contar cuántos estudiantes estuvieron 1SD por debajo y 2SD por debajo de la media, podemos utilizar las funciones
map
ysum
del paquetepurrr
. 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
ycount_failed
, que muestran cuántos estudiantes obtuvieron un puntaje 1SD por debajo y 2SD por debajo de la media, respectivamente.