CLASE 1 fuma <- c(F,F,F,F,T)
saber <- c(NA,372,NA,350,NA)
Sys.getenv() # Revisar si esta en mean(saber, na.rm = T)
espa�ol datos <- data.frame(ID, nombre, sexo,
edad, fuma, saber)
rm(list = ls()) # Borrar todo, lo mismo de dim(datos)
la escoba nrow(datos)
# Vectores (<- es lo mismo que = ) ncol(datos)
nombres <- c("Nicol�s", "Harold",
"Eliseo", 'Valentina', "Andr�s") # str(datos)
class(nombres) # Vector de clase class(nombre)
'character' datos <- data.frame(ID, nombre, sexo,
edad <- c(24, 27, 21, 19, 35) edad, fuma, saber,
class(edad) stringsAsFactors = F)
edad <- c(24L, 27L, 21L, 19L, 35L) str(datos)
class(edad) PARTE 2 – CLASE 2
# edit(nombres) # �til para ver los library(readxl)
elementos como se almacenan library(writexl)
library(readr)
ID <- 1:5
# edit(ID) ID <- 1:5
class(ID) nombre <-
bicicleta <- c(TRUE, FALSE, T, F, F) c("Daniel","Angela","Eliseo","Michael","Ca
class(bicicleta) milo")
a <- c(1, 3) sexo <- c("m","f","m","m","m")
rm(a) # Borrar (remove) el vector a , edad <- c(18,20,21,20,22)
hacer ?rm fuma <- c(F,F,F,F,T)
sum(bicicleta) saber <- c(NA,372,NA,350,NA)
mean(edad) mean(saber, na.rm = T)
datos <- data.frame(ID, nombre, sexo,
fechas <- c("18/12/1994", "5/04/1991", edad, fuma, saber)
"26/05/1998", dim(datos)
"25/06/2000", "01/11/1983") nrow(datos)
class(fechas) # Clase 'character' ncol(datos)
fechas2 <- as.Date(fechas, "%d/%m/%Y")
class(fechas2) str(datos)
class(nombre)
# Escribir c("10 May 1985, 18 Dec 1994") datos <- data.frame(ID, nombre, sexo,
como fecha edad, fuma, saber,
# Escribir c("85-05-10", "94-12-18") stringsAsFactors = F)
fechas3 <- as.Date( c("10 Mayo 1985", "18 str(datos)
Diciembre 1994"), "%d %B %Y") sexo2 <- factor(sexo)
fechas3 # Pendiente de revisar # edit(sexo2)# ver la estructura
class(fechas3) almacenamiento de datos
fechas4 <- as.Date(c("85-05-10", "94-12- deporte <- factor(c("tennis","futbol",
18"), "%y-%m-%d") "basket", "futbol", "basket"))
# fechas4 class(deporte)
# print(fechas4) getwd()
class(fechas4) write_xlsx(datos,"mi primer archivo de
(Sys.Date() - fechas4)/365 excel.xlsx")
datos2 <- read_excel("mi primer archivo de
Sys.setenv() excel.xlsx")
setwd("C:/Users/prsala402/Desktop")
desempleo <- read_csv2("Unemployment.csv")
CLASE 2 dir()
class(desempleo)
ID <- 1:5
nombre <-
c("Daniel","Angela","Eliseo","Michael","Ca
milo")
sexo <- c("m","f","m","m","m")
edad <- c(18,20,21,20,22)
CLASE 3 – TALLER EN R #8. Comprobar cuáles de las siguientes
operaciones producen una indeterminación
#Taller 1 - Laura V. Tejada matemática en el cálculo del resultado.
#1. Leer capítulo 1, 2 y 3 Operacion <- sum (Inf,Inf)
#2. Utilizar la función sum para calcular: Operacion2 <- sum ( Inf, 0)
Operacion3 <- Inf-Inf
Suma <- sum(1:50) Operacion4 <- 0/0
Suma2 <- sum ((1:50)^2) ; Suma2.2 <- sum Operacion5 <- 4/0
((1:50)^3) Operacion6 <- NA / 0
Suma3 <- sum ((1:10)*3) Operacion7 <- NA + Inf
Operacion8 <- NULL - Inf
Operacion9 <- 0^0
#3. Utilizar la función rep para crear los Operacion10 <- Inf^0
vectores formados por los siguientes
números
rep(c(1,2),5) CLASE 4
rep(1:4,c(3,3,3,3))
rep(1:4, each=3) library(readxl)
getwd()
#4. Utilizar la orden rep para crear los setwd("C:/Users/prsala402/Documents")
dos vectores que realmente se suman cuando # la siguiente...
se ejecutan: datos <- read_excel("DATOS.xlsx")
x <- rep (c(-2.1,3.9)) class(datos$FECHA_NACIMIENTO)
y <- rep (c(1.2,3.5,4.2,-1.1,0.8)) class(datos$NOMBRE)
Ejecución <- sum (x,y) str(datos)
?saveRDS
#5. Utilizar la orden seq para crear los saveRDS(datos, "datos en r.rds")
siguientes vectores: #borrar todo()
seq(55,59) datos <- readRDS("datos en r.rds")
seq(from = 1, to = 11, by = 2) #leer la base de datos saber 2017
seq (1,10, length.out = 100) saber2017 <- readRDS("students.rds")
str(saber2017)
#6. Las funciones sort, rev, order y rank mean(saber2017$MATEMATICAS_PUNT, na.rm =
son bastante útiles a la hora de de T)
ordenar valores hist(saber2017$MATEMATICAS_PUNT, freq =
z <- sample(1:100,15,replace = T) FALSE)
z mean(MATEMATICAS_PUNT)
rev(sort(z)) summary(saber2017$MATEMATICAS_PUNT)
order(z) boxplot(saber2017$MATEMATICAS_PUNT)
order(z, decreasing = T) names(saber2017)
rank(z) summary(saber2017[,21])
#seleccionar 5 primeros estudiantes en la
#7. Para los números: base
numeros <- saber2017[1:5, 21]
c(2,4.1,0.5,1.8,0.43,0.03,12,2.8) table(saber2017$NATURALEZA)
##a)RAICES CUADRADAS prop.table(table(saber2017$NATURALEZA))
raices <- filtro <- saber2017$NATURALEZA ==
sqrt(c(2,4.1,0.5,1.8,0.43,0.03,12,2.8)) "Oficial"
datos_publicos <- saber2017[filtro,]
#b)DIFERENCIAS ENTRE LOS NUMEROS Y SUS #filtrar puntajes mayores a 70 en
RAICES CUADRADAS matematicas
dif <- c(2,4.1,0.5,1.8,0.43,0.03,12,2.8)- 5 == 7
sqrt(c(2,4.1,0.5,1.8,0.43,0.03,12,2.8)) c(5, 4, 8) > 4
c("Jose", "Daniel", "Juan", "Jose") ==
#c) Extraer los valores donde los "Daniel"
números sean mayores que sus raíces filtro2 <- saber2017$NATURALEZA ==
cuadradas. "Oficial" & saber2017$MATEMATICAS_PUNT >
extr<- numeros[dif>0] 70
becados <- saber2017[filtro2,]
#d) Sustituir estos elementos por sus vagos <- saber2017[!filtro2,]
valores multiplicados por 2. !5 == 7
replace <- replace (extr,extr*2) !c(T, F, F, T)
colSums(matriz)
# Otra alternativa:
CLASE 5 apply(matriz, 1, FUN = sum)
apply(matriz, 2, FUN = sum)
library(dplyr) # Procesar datos
setwd("C:/Users/prsala403/Downloads") # 3 punto
est <- readRDS("estudiantes.rds") data(iris)
summary(iris$Sepal.Width)
summary(est) quantile(iris$Sepal.Width)
# �Est� relacionado el punt en Lect Crit # 4 punto
con el punt en Matem???? c(3, 7, 6, 3, 2) + c(4, 5)
cor(est$MATEMATICAS_PUNT, c(3, 7, 6, 3, 2) + 100
est$LECTURA_CRITICA_PUNT)
with(est, cor(MATEMATICAS_PUNT,
LECTURA_CRITICA_PUNT )) MEAN AND HIST
plot(est$LECTURA_CRITICA_PUNT,
est$MATEMATICAS_PUNT) ## Estadísticas básicas
# edit(names(est)) El promedio se calcula como:
$$\overline{x} = \frac{\sum_i^n x_i}{n}$$
varpuntajes <- c("LECTURA_CRITICA_PUNT",
"MATEMATICAS_PUNT", En R si tengo los siguientes datos: 1, 3,
"SOCIALES_CIUDADANAS_PUNT", 5, 7, 9, calculo el promedio así:
"CIENCIAS_NATURALES_PUNT",
"INGLES_PUNT") ```{r}
datospunt <- est[, varpuntajes] mean(c(1, 3, 5, 7, 9))
cor(datospunt) ```
# Como les fue a las mujeres en Podemos calcular un histograma con los
matematicas frente a los hombres número del 1 al 100:
table(est$PERS_GENERO, useNA = "always")
```{r}
boxplot(est$MATEMATICAS_PUNT ~ hist(1:100)
est$PERS_GENERO, col = c("pink", "blue"))
boxplot(MATEMATICAS_PUNT ~ PERS_GENERO,
data = est) CLASE 6 MARK DOWN / DPLYR – AGREGACIONES
aggregate(MATEMATICAS_PUNT ~ PERS_GENERO, ---
data = est, FUN = mean) title: "Reporte colegios"
aggregate(MATEMATICAS_PUNT ~ PERS_GENERO, author: "José Zea"
data = est, FUN = median) date: "20 de agosto de 2019"
QUIZ CLASE 5 output: html_document
# 1 punto ```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
x <- 1:10 ```
x[c(3, 5, 9)] <- NA
x[-c(3, 5, 9)] <- 1 ```{r, echo=FALSE,warning=FALSE,
message=FALSE}
# otra forma: library(dplyr)
a <- 1:10 library(pander)
a <- replace(a, c(3, 5, 9), NA) est <- readRDS("estudiantes.rds")
#a <- replace(a, c(1, 2, 4, 6, 7, 8, 10), ```
1)
a <- replace(a, -c(3, 5, 9), 1) #
Equivalente a la anterior linea # Análisis Municipios
Los mejores mpios en matemáticas son:
# 2 punto CREAR MATRICES
```{r, echo=FALSE,warning=FALSE,
matriz <- matrix(c(1, 20, 10, 0, 18, 4), message=FALSE}
ncol = 2, byrow = T) consulta1 <- est %>%
rowSums(matriz) group_by(DEPARTAMENTO, NOMBREMUNICIPIO) %>
% summarise(prom_matem =
mean(MATEMATICAS_PUNT)) %>% ungroup() %>% FINS_PERSONASHOGARACTUAL /
arrange(-prom_matem) %>% mutate(ranking = FINS_CUARTOSHOGARACTUAL,
1:nrow(.)) %>% PUNTAJE = ((3 *
filter(ranking <= 10) %>% LECTURA_CRITICA_PUNT + 3 *
select(-ranking) # No seleccione MATEMATICAS_PUNT +
ranking, "deje las otras" 3 * SOCIALES_CIUDADANAS_PUNT + 3 *
#select(DEPARTAMENTO, NOMBREMUNICIPIO, CIENCIAS_NATURALES_PUNT +
prom_matem) INGLES_PUNT) / 13 ) * 5,CARENCIA_DIGITAL =
#consulta1Mala <- est %>% FINS_TIENECOMPUTADOR == "N" |
summarise(prom_matem = FINS_TIENEINTERNET == "N")
#mean(MATEMATICAS_PUNT))
```
```{r, echo=FALSE} # table(est$FINS_TIENECOMPUTADOR, useNA =
pander(consulta1) "always")
``` # table(est$FINS_TIENEINTERNET, useNA =
"always")
#
# Análisis Colegios table(est$NOMBREMUNICIPIO[is.na(est$FINS_T
Los 10 mejores colegios de Bogotá son: IENEINTERNET)])
# a <- est[is.na(est$FINS_TIENEINTERNET),]
```{r, echo=FALSE}
consulta2 <- est %>% # An�lisis de posibles causas del buen o
filter(NOMBREMUNICIPIO == "BOGOTÁ D.C.") mal desempe�o del estudiante.
%>% # aes: aesthetic
group_by(AGSB_NOMBREINSTITUCION) %>% ggplot(data = est, aes(x =
summarise(prom_matem = CARENCIA_DIGITAL , y = PUNTAJE, color =
mean(MATEMATICAS_PUNT)) %>% ungroup() %>% CARENCIA_DIGITAL)) +
arrange(-prom_matem) %>% mutate(ranking = geom_boxplot()
1:nrow(.)) %>%
filter(ranking <= 10) %>%
select(-ranking) ggplot(data = est, aes(x = PUNTAJE, color
``` = CARENCIA_DIGITAL)) +
geom_density()
```{r, echo=FALSE}
pander(consulta2) # est$FINS_ESTRATOVIVIENDAENERGIA <-
``` as.factor(est$FINS_ESTRATOVIVIENDAENERGIA)
ggplot(data = est, aes(x =
Los colegios con más estudiantes son: factor(FINS_ESTRATOVIVIENDAENERGIA),
y = PUNTAJE,
```{r, echo=FALSE} color =
consulta3 <- est %>% factor(FINS_ESTRATOVIVIENDAENERGIA))) +
filter(NOMBREMUNICIPIO == "BOGOTÁ D.C.") geom_boxplot()
%>% group_by(AGSB_NOMBREINSTITUCION) %>%
summarise(Total_chinos = n()) %>%
ungroup() %>% arrange(-Total_chinos) %>% ggplot(data = est, aes(x = PUNTAJE,
mutate(ranking = 1:nrow(.)) %>% color =
filter(ranking <= 50) factor(FINS_ESTRATOVIVIENDAENERGIA))) +
``` geom_density()
```{r, echo=FALSE} # Jornada
pander(consulta3) ggplot(data = est, aes(x = JORNADA,
``` y = PUNTAJE,
CLASE 7 – TRANSFORMACIONES Y GRAFICOS BASICOS color = JORNADA)) +
geom_boxplot()
library(dplyr)
library(ggplot2)
setwd("C:/Users/prsala403/Downloads") # Jornada y NaTURALEZA
est <- readRDS("estudiantes.rds") ggplot(data = est, aes(x = NATURALEZA,
y = PUNTAJE,
# Variable Hacinamiento color = JORNADA)) +
est <- est %>% mutate(Hacinamiento = geom_boxplot()
# Hacinamiento y el puntaje %in% 1:2,
# ggplot(data = est, aes(x = Hacinamiento, "Bajo",
# y = PUNTAJE)) +
# geom_point() ifelse(FINS_ESTRATOVIVIENDAENERGIA %in%
set.seed(220819) 3:4,
seleccion <- sample(nrow(est), 1000)
muestra <- est[seleccion,]
"Medio",
ggplot(data = muestra, aes(x =
Hacinamiento,
y = PUNTAJE)) + ifelse(FINS_ESTRATOVIVIENDAENERGIA %in%
geom_point() 5:6,
"Alto",
"NS/NR"))))
table(estudiantes$EstratoR, useNA =
CLASE 8 – RECODIFICACION VARIABLES Y MAS
"always")
GRAFICOS
estudiantes$EstratoR <- NA
library(plyr) # mapvalues
estudiantes$EstratoR[estudiantes$FINS_ESTR
library(ggplot2)
ATOVIVIENDAENERGIA %in% 1:2] <- "1.B"
estudiantes <- readRDS("estudiantes.rds")
estudiantes$EstratoR[estudiantes$FINS_ESTR
table(estudiantes$JORNADA)
ATOVIVIENDAENERGIA %in% 3:4] <- "2.M"
estudiantes$EstratoR[estudiantes$FINS_ESTR
# Recategorizaci�n de variables ATOVIVIENDAENERGIA %in% 5:6] <- "3.A"
# df_newOld <- read.delim("clipboard") table(estudiantes$EstratoR, useNA =
# dput(df_newOld) "always")
df_newOld <- structure(list(Viejo =
structure(c(1L, 2L, 5L, 3L, 4L), .Label =
# N�mero de personas
c("Completa u ordinaria",
estudiantes$NumPerR <- with(estudiantes,
"Ma�ana", "Noche", "Sabatina - ifelse(FINS_PERSONASHOGARACTUAL == 1,
Dominical", "Tarde"), class = "factor"),
Nuevo = structure(c(1L, 2L, 2L, 3L, "Unip",
3L), .Label = c("Completa u ordinaria",
"Ma�ana - Tarde", "Validaci�n"), class = ifelse(FINS_PERSONASHOGARACTUAL <= 4,
"factor")), class = "data.frame", "Familiar",
row.names = c(NA,-5L))
df_newOld$Viejo <- ifelse(FINS_PERSONASHOGARACTUAL >= 5,
as.character(df_newOld$Viejo) "Grande",
df_newOld$Nuevo <- "NS/Nr"))))
as.character(df_newOld$Nuevo) table(estudiantes$NumPerR, useNA =
estudiantes$JornadaR <- mapvalues(x = "always")
estudiantes$JORNADA, from =
df_newOld$Viejo, #c("Comple", "Ma�ana", ) # Comparar seg�n el estrato recodificado
to = y la jornada el desempe�o en matem
df_newOld$Nuevo) ggplot(estudiantes, aes(x = EstratoR, y =
table(estudiantes$JornadaR) MATEMATICAS_PUNT,
color = JornadaR))
+ geom_boxplot()
# Recodificar estrato
table(estudiantes$FINS_ESTRATOVIVIENDAENER ggplot(estudiantes, aes(x =
GIA, useNA = "always") MATEMATICAS_PUNT,
estudiantes$EstratoR <- plyr::mapvalues(x color = EstratoR))
= estudiantes$FINS_ESTRATOVIVIENDAENERGIA, + geom_density() +
from = 1:6, facet_grid(JornadaR ~ . )
to = c("Bajo",
"Bajo", "Medio", "Medio",
"Alto",
"Alto"))
table(estudiantes$EstratoR)
estudiantes$EstratoR <- with(estudiantes,
ifelse(FINS_ESTRATOVIVIENDAENERGIA
CLASE 9 – RECODIFICACION Y BAR PLOTS consulta <- datos %>%
filter(NOMBREMUNICIPIO == "BOGOT� D.C.")
library(dplyr)
library(ggplot2) quantile(consulta$INGLES_PUNT)
library(forcats)
setwd("C:/Users/prsala403/Downloads")
datos <- readRDS("estudiantes.rds") # Ejercicio: Invertir el orden del estrato
table(datos$FINS_ESTRATOVIVIENDAENERGIA)
#Quiz
#1. Construir una tabla donde est�n los datos$estratoR <-
10 departamentos factor(datos$FINS_ESTRATOVIVIENDAENERGIA,
#con puntaje en ingl�s mediano m�s alto. levels = 6:1)
consulta1 <- datos %>% table(datos$estratoR)
dplyr::group_by(DEPARTAMENTO) %>% ggplot(data = datos, aes(x = estratoR)) +
dplyr::summarise(mediana_ingles = geom_bar()
median(INGLES_PUNT)) %>%
arrange(-mediana_ingles) ggplot(data = datos, aes(x = estratoR)) +
geom_bar(aes(y = 100 *
consulta1 <- consulta1[1:10,] (..count..)/sum(..count..)))
table(consulta1$DEPARTAMENTO)
ggplot(data = consulta1, aes(x = # Con el paquete para gatos
DEPARTAMENTO, y = mediana_ingles)) + table(datos$DEPARTAMENTO)
geom_bar(stat = "identity") prop.table(table(datos$DEPARTAMENTO))
# Con esto no logramos ordenar las prueba <- fct_infreq(datos$DEPARTAMENTO)
categor�as :( table(prueba)
consulta1$DEPARTAMENTO <- class(prueba)
as.factor(consulta1$DEPARTAMENTO) levels(prueba)
consulta1$DEPARTAMENTO prueba
table(consulta1$DEPARTAMENTO)
datos$DeptRecod <-
# Con esto si lo lograriamos: fct_infreq(datos$DEPARTAMENTO)
consulta1 <- datos %>% table(datos$DeptRecod)
dplyr::group_by(DEPARTAMENTO) %>% ggplot(data = datos, aes(x = DeptRecod)) +
dplyr::summarise(mediana_ingles = geom_bar(aes(y = 100 *
median(INGLES_PUNT)) %>% (..count..)/sum(..count..)))
arrange(-mediana_ingles)
datos$DeptRecod2 <-
consulta1$DEPARTAMENTO <- fct_rev(fct_infreq(datos$DEPARTAMENTO))
factor(consulta1$DEPARTAMENTO, table(datos$DeptRecod2)
levels = ggplot(data = datos, aes(x = DeptRecod2))
consulta1$DEPARTAMENTO ) +
geom_bar(aes(y = 100 *
table(consulta1$DEPARTAMENTO) (..count..)/sum(..count..)))
ggplot(data = consulta1, aes(x =
DEPARTAMENTO, y = mediana_ingles)) + consulta2 <- datos %>%
geom_bar(stat = "identity") + dplyr::group_by(DEPARTAMENTO) %>%
coord_flip() dplyr::summarise(mediana_ingles =
median(INGLES_PUNT)) %>%
arrange(-mediana_ingles)
#2 Para los colegios de Bogot�: table(consulta2$DEPARTAMENTO)
consulta2$DeptoRecod <-
# Calcular el m�nimo, percentil 25, fct_inorder(consulta2$DEPARTAMENTO)
mediana table(consulta2$DeptoRecod)
#percentil 75 y m�ximo para el puntaje en ggplot(data = consulta2, aes(x =
ingl�s DeptoRecod, y = mediana_ingles)) +
geom_bar(stat = "identity")
consulta <- datos %>%
filter(NOMBREMUNICIPIO == "BOGOT� D.C.") # Para borrar columnas
summary(consulta$INGLES_PUNT) datos$estratoR <- NULL
datos$DeptRecod <- NULL
datos$DeptRecod2 <- NULL
CLASE 10 – TALLER PRE PARCIAL
#4. Busque como le fue a su colegio y genere un
```{r} consecutivo para saber el ranking
library(dplyr) ```{r, echo=FALSE, warning=FALSE, message=FALSE}
library(pander) punto4 <- estudiantes %>% mutate(Puntaje =
library(ggplot2) (LECTURA_CRITICA_PUNT + MATEMATICAS_PUNT
``` + SOCIALES_CIUDADANAS_PUNT +
CIENCIAS_NATURALES_PUNT + INGLES_PUNT) / 5)
```{r, echo=FALSE, warning=FALSE, message=FALSE} %>% group_by(CODIGO_ICFES,
estudiantes <- readRDS("estudiantes.rds") AGSB_NOMBREINSTITUCION, JORNADA) %>%
cons <- estudiantes %>% group_by(CODIGO_ICFES, summarise(prom_Puntaje = mean(Puntaje)) %>%
AGSB_NOMBREINSTITUCION) %>% summarise(temp ungroup() %>% arrange(prom_Puntaje) %>%
= n()) mutate(ranking = 1:nrow(.)) %>% filter(CODIGO_ICFES
cons2 <- cons %>% == "034397")
group_by(AGSB_NOMBREINSTITUCION) %>% pander(punto4)
summarise(cuenta = n()) ```
#table(cons2$cuenta)
``` #5. Encuentre los 10 mejores colegios de Bogotá?
(según el promedio total) de jornada continua, que
#1. Seleccione los colegios que pertenecen registraron más de 10 estudiantes y que sean de
únicamente a Bogotá, calcule el promedio total por calendario A.
colegio y clasifíquelos ```{r, echo=FALSE, warning=FALSE, message=FALSE}
```{r, echo=FALSE, warning=FALSE, message=FALSE} punto5 <- estudiantes %>% filter(DEPARTAMENTO ==
"BOGOTA") %>%
punto1 <- estudiantes %>% filter(DEPARTAMENTO == group_by(AGSB_NOMBREINSTITUCION) %>%
"BOGOTA") %>% mutate(Puntaje = filter(JORNADA == "Completa u ordinaria") %>%
(LECTURA_CRITICA_PUNT + MATEMATICAS_PUNT filter(CALENDARIO == "Calendario A") %>%
+ SOCIALES_CIUDADANAS_PUNT + mutate(Puntaje = (LECTURA_CRITICA_PUNT +
CIENCIAS_NATURALES_PUNT + INGLES_PUNT) / MATEMATICAS_PUNT +
5) %>% group_by(CODIGO_ICFES, SOCIALES_CIUDADANAS_PUNT +
AGSB_NOMBREINSTITUCION) %>% CIENCIAS_NATURALES_PUNT + INGLES_PUNT) / 5)
summarise(prom_Puntaje = mean(Puntaje)) %>% %>% summarise(prom_Puntaje = mean(Puntaje)) %>%
mutate(nivel = ifelse(prom_Puntaje <= 45, "Muy Bajo", mutate(ranking = 1:nrow(.)) %>% filter(ranking <= 10)
ifelse(prom_Puntaje < 55, "Bajo", %>% select(-ranking)
ifelse(prom_Puntaje < 65, "Alto", pander(punto5)
"Muy Alto")))) %>% ```
group_by(nivel) %>% summarise(cuenta = n())
pander(punto1) #6. ?Cu?les son los colegios de Bogot? que est?n
en el ?ltimo decil de matem?ticas y que tiene entre
# p1$nivel <- factor(p1$nivel, levels = c("Muy Bajo", 20 y cincuenta estudiantes?
"Bajo", "Alto", "Muy Alto")) ```{r, echo=FALSE, warning=FALSE, message=FALSE}
``` punto6 <- estudiantes %>% filter(DEPARTAMENTO ==
"BOGOTA") %>%
#2. Con el anterior resultado realice un gráfico de las group_by(AGSB_NOMBREINSTITUCION) %>%
categorías creadas y analice summarise(num_estudiantes = n(), num_estudiantes2
```{r, echo=FALSE, warning=FALSE, = max(EVALUADOS),
message=FALSE} PROM_MAT = mean(MATEMATICAS_PUNT))
%>%
ggplot(punto1, aes(x = nivel, y = cuenta)) + mutate(p90 = quantile(PROM_MAT, 0.9)) %>% # Ver el
geom_bar(stat = "identity") + theme_bw() percentil 90 del prom matematica para los colegios
``` filter((num_estudiantes >= 20 & num_estudiantes <=
50) & PROM_MAT > p90)
#3. Correlación entre el puntaje de matemáticas y el pander(punto6)
puntaje de ingles por departamento, ¿existe ```
correlación?
```{r, echo=FALSE, warning=FALSE, message=FALSE} #7. ?En qué departamento se presentan los mayores
punto3 <- estudiantes %>% coeficientes de variación en el promedio total? Para
group_by(DEPARTAMENTO) %>% responder a esto, genere una tabla donde calcule el
summarise(correlación_colegios = coeficiente de variaci?n del promedio total
cor(MATEMATICAS_PUNT, INGLES_PUNT)) desagregado por departamento y ordene por el
pander(punto3) coeficiente de variación.
```
(LECTURA_CRITICA_PUNT + MATEMATICAS_PUNT
```{r, echo=FALSE, warning=FALSE, message=FALSE} + SOCIALES_CIUDADANAS_PUNT +
punto7 <- estudiantes %>% mutate(Puntaje = CIENCIAS_NATURALES_PUNT + INGLES_PUNT) / 5)
(LECTURA_CRITICA_PUNT + MATEMATICAS_PUNT %>% group_by(DEPARTAMENTO) %>%
+ SOCIALES_CIUDADANAS_PUNT + filter(DEPARTAMENTO == "ANTIOQUIA" |
CIENCIAS_NATURALES_PUNT + INGLES_PUNT) / DEPARTAMENTO == "CUNDINAMARCA" |
5) %>% group_by(DEPARTAMENTO) %>% DEPARTAMENTO == "VALLE") %>%
summarise(cve = sd(Puntaje) / mean(Puntaje)*100) %> summarise(prom_Puntaje = mean(Puntaje))
% arrange(cve) pander(punto10)
pander(punto7)
```
CLASE 11 - QUANTILES
#8. ¿El estrato donde está ubicado el colegio tiene
incidencia en el promedio total del mismo? Responda library(dplyr)
esta pregunta con un gráfico y su correspondiente est <- readRDS("estudiantes.rds")
análisis
# El puntaje de matematicas a Nivel Alto,
```{r, echo=FALSE, warning=FALSE, message=FALSE} Medio, Bajo y Muy Bajo
punto8 <- estudiantes %>% mutate(Puntaje = # Nivel Alto: por encima de P75: [56, 100]
(LECTURA_CRITICA_PUNT + MATEMATICAS_PUNT # Nivel Medio: Entre e� P50 y el P75:
+ SOCIALES_CIUDADANAS_PUNT + [50, 56)
CIENCIAS_NATURALES_PUNT + INGLES_PUNT) / # Nivel Bajo Entre e� P25 y el P50: [44,
5) 50)
estudiantes$FINS_ESTRATOVIVIENDAENERGIA <- # Nivel Muy Bajo menor al P25: [0, 44)
as.factor(estudiantes$FINS_ESTRATOVIVIENDAENER
GIA) hist(est$MATEMATICAS_PUNT)
ggplot(estudiantes, aes(x = cortes <- quantile(est$MATEMATICAS_PUNT)
factor(FINS_ESTRATOVIVIENDAENERGIA), y = # Queda mal as� :(
"Puntaje", color = est$NivelMatem <-
factor(FINS_ESTRATOVIVIENDAENERGIA))) + cut(est$MATEMATICAS_PUNT, breaks = cortes)
geom_boxplot() table(est$NivelMatem)
pander(punto8) sum(table(est$NivelMatem))
``` table(est$MATEMATICAS_PUNT == 0)
nrow(est)
#9. Genere estad?sticas de resumen (promedio, # As� queda bien: :)
mediana, percentiles, etc) paracada uno de los est$NivelMatem <-
departamentos seg?n el promedio total y analice. cut(est$MATEMATICAS_PUNT, breaks = cortes,
p9 <- est %>% group_by(DEPARTAMENTO) %>% include.lowest = T,
summarise(prom_mat = right = F)
mean(MATEMATICAS_PUNT), table(est$NivelMatem)
p25 = sum(table(est$NivelMatem))
quantile(MATEMATICAS_PUNT, 0.25), # Ejercicio: recodificar el puntaje en
mediana = matematicas as�:
median(MATEMATICAS_PUNT), # Menores a 50: Bajo
p75 = # Entre 50 y 70 (sin incluir al 70):
quantile(MATEMATICAS_PUNT, 0.75)) %>% Medio,
arrange(-prom_mat) # Mas o igual de 70: Alto
est$NivelMatem2 <-
quantile(est$MATEMATICAS_PUNT, 0.75) cut(est$MATEMATICAS_PUNT,
quantile(est$MATEMATICAS_PUNT, probs = breaks = c(0, 50,
0.75) 70, 100),
quantile(probs = 0.75, x = include.lowest = T,
est$MATEMATICAS_PUNT ) right = F)
#quantile(0.75, est$MATEMATICAS_PUNT ) table(est$NivelMatem2)
100 * prop.table(table(est$NivelMatem2))
pander(punto9)
```
#10. Grafico de comparación del promedio total
entre Antioquia, Valle y Cundinamarca
```{r, echo=FALSE, warning=FALSE, message=FALSE}
punto10 <- estudiantes %>% mutate(Puntaje = APUNTES DE CAP 5 LIBRO R PARA CIENCIA DE DATOS
VUELOS BASE mutate(vuelos_sml,ganancia = atraso_salida -
atraso_llegada, velocidad = distancia /
int significa enteros. tiempo_vuelo * 60)
dbl significa dobles, o números reales. transmute(vuelos,
ganancia = atraso_salida - atraso_llegada,
chr significa vectores de caracteres
horas = tiempo_vuelo / 60,
dttm significa fechas y horas (una fecha ganancia_por_hora = ganancia / horas)
+ una hora)
lgl significa lógico, vectores que solo CON TRANSMUTE CONSERVAR NUEVAS VARIABLES
contienen TRUE (verdadero) o FALSE (falso).
fctr significa factores, representar variables transmute(vuelos, horario_salida,
categóricas con valores posibles fijos. hora = horario_salida %/% 100,
minuto = horario_salida %% 100)
date significa fechas.
HORA Y SALIDA DE LOS VUELOS
ene1 <- filter(vuelos, mes == 1, dia == 1)
summarise(vuelos, atraso =
filter(vuelos, mes = 1)
mean(atraso_salida, na.rm = TRUE))
filter(vuelos, mes == 11 | mes == 12)
VUELOS EN NOVIEMBRE Y DICIEMBRE NA.RM=TRUE SIGNIFICA EN MUY POCO TIEMPO
filter(vuelos, !(atraso_llegada > 120 | vuelos_sml %>%
atraso_salida > 120)) group_by(anio, mes, dia) %>%
VUELOS QUE NO SE RETRASARON AS DE 2 HORAS filter(rank(desc(atraso_llegada)) < 10)
is.na(x) FALTA UN VALOR CAP 7 LIBRO R PARA CIENCIA DE DATOS
TODO SOBRE GRAFICOS
arrange(vuelos, desc(atraso_salida))
ORDEN DESCENDENTE library(tidyverse)
library(datos)
df <- tibble(x = c(5, 2, NA))
VALORES FALTANTES ggplot(data = diamantes) +
geom_bar(mapping = aes(x = corte))
# Seleccionar columnas por nombre
select(vuelos, anio, mes, dia) diamantes %>% count(corte)
Hay una serie de funciones auxiliares que ggplot(data = diamantes) +
geom_histogram(mapping = aes(x = quilate),
puedes usar dentro de select(): binwidth = 0.5)
starts_with("abc"): coincide con los
nombres que comienzan con “abc”. pequenos <- diamantes %>%
ends_with("xyz"): coincide con los filter(quilate < 3)
nombres que terminan con “xyz”.
contains("ijk") : coincide con los ggplot(data = pequenos, mapping = aes(x =
nombres que contienen “ijk”. quilate)) +
geom_histogram(binwidth = 0.1)
matches("(.)\\1") : selecciona variables HACER EL HIST CON BARRAS MAS PEQUEÑAS
que coinciden con una expresión regular.
Esta en particular coincide con cualquier ggplot(data = pequenos, mapping = aes(x =
variable que contenga caracteres repetidos. quilate, colour = corte)) +
Aprenderás más sobre expresiones regulares geom_freqpoly(binwidth = 0.1)
en Cadenas de caracteres. DAR COLOR
num_range("x", 1:3) : coincide
ggplot(data = millas) +
con x1,x2 y x3. geom_boxplot(mapping = aes(x =
reorder(clase, autopista, FUN = median), y =
vuelos_sml <- select(vuelos, anio:dia, autopista))
starts_with("atraso"),distancia, REORGANIZAR EL GGPLOT, RESPECTO A LA MEDIANA
tiempo_vuelo) DE UNA VARIABLE
ggplot(data = millas) +
geom_boxplot(mapping = aes(x =
reorder(clase, autopista, FUN = median), y =
autopista)) + coord_flip()
ULTIMO CODIGO PARA VOLTEAR COORDENADAS
ggplot(data = faithful) +
geom_point(mapping = aes(x = eruptions, y
= waiting))