survey_report.R en R
Limpiar un data frame de encuesta y reportar resultados por grupo en R base.
#!/usr/bin/env Rscript
# Limpia un data frame de encuesta y reporta resultados agrupados en R base.
survey <- data.frame(
respondent = 1:8,
region = c("north", "south", "north", "east",
"south", "east", "north", NA),
rating = c(4, 5, NA, 3, 5, 2, 4, 4),
minutes = c(12, 25, 18, 7, 31, 9, 22, 14),
stringsAsFactors = FALSE
)
clean <- survey[!is.na(survey$region) & !is.na(survey$rating), ]
clean$region <- factor(clean$region,
levels = c("north", "south", "east"))
clean$engaged <- clean$minutes > 15
cat("responses:", nrow(survey), "->", nrow(clean), "after cleaning\n\n")
by_region <- aggregate(cbind(rating, minutes) ~ region,
data = clean, FUN = mean)
by_region$rating <- round(by_region$rating, 2)
by_region$minutes <- round(by_region$minutes, 1)
print(by_region)
cat("\nengagement by region:\n")
print(table(clean$region, clean$engaged))
cat("\noverall mean rating:", round(mean(clean$rating), 2), "\n")
cat("correlation rating~minutes:",
round(cor(clean$rating, clean$minutes), 3), "\n")
Cómo funciona
- Las filas sin región o sin calificación se descartan.
factorordena las regiones; una columna derivada marca la participación.aggregateytableproducen el reporte agrupado.
El intento, en números
- Líneas
- 31
- Caracteres a escribir
- 999
- Tokens
- 272
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 155 segundos.
Paso 1 de 1 en Bis; paso 8 de 8 en Data frames en R base.