TAREA UNO

SEBASTIAN, IVAN Y JORGE

library(readxl)
TP <- read_excel("BASES/TABLA_TAREA1.xlsx")

1. ¿Cuántas filas y columnas tiene el data.frame?

dim(TP)
## [1] 62 10

2. Realice una exploración rápida usando las instrucciones: head, tail, str, summary, etc.

head(TP)
## # A tibble: 6 × 10
##   PERSONA   EDAD  SEXO  ESTATURA NIVEL…¹ MARCA…² NUMER…³ SALARIO MASCOTA CIUDA…⁴
##   <chr>     <chr> <chr> <chr>    <chr>   <chr>   <chr>     <dbl> <chr>   <chr>  
## 1 <NA>      <NA>  <NA>  <NA>     <NA>    <NA>    <NA>         NA <NA>    <NA>   
## 2 <NA>      <NA>  <NA>  <NA>     <NA>    <NA>    <NA>         NA <NA>    <NA>   
## 3 PERSONA 1 21    M     1.54     MAESTR… AUDI    0       1200000 SI      Bogotá…
## 4 PERSONA 2 26    F     1.55     PROFES… RENAULT 5       1250000 NO      Medell…
## 5 PERSONA 3 30    F     1.6      DOCTOR… BMW     2        900000 NO      Palmir…
## 6 PERSONA 4 31    f     1.7      PROFES… RENAULT 2        800000 NO      Medell…
## # … with abbreviated variable names ¹​`NIVEL ESCOLAR`, ²​`MARCA DE AUTO`,
## #   ³​`NUMERO DE HIJOS`, ⁴​`CIUDAD-DPTO`
tail(TP)
## # A tibble: 6 × 10
##   PERSONA    EDAD  SEXO  ESTAT…¹ NIVEL…² MARCA…³ NUMER…⁴ SALARIO MASCOTA CIUDA…⁵
##   <chr>      <chr> <chr> <chr>   <chr>   <chr>   <chr>     <dbl> <chr>   <chr>  
## 1 PERSONA 55 30    F     1.54    MAESTR… CHEVRO… 2       2400000 SI      Bogotá…
## 2 PERSONA 56 39    M     1.58    MAESTR… AUDI    1       2600000 NO      Medell…
## 3 PERSONA 57 34    F     1.6     DOCTOR… BMW     1       3500000 SI      Pasto/…
## 4 PERSONA 58 24    f     1.7     PROFES… RENAULT 3        800000 SI      Palmir…
## 5 PERSONA 59 20    M     1.71    MAESTR… AUDI    0        850000 NO      Villav…
## 6 PERSONA 60 10    M     1.8     PROFES… AUDI    0       1000000 NO      Pasto/…
## # … with abbreviated variable names ¹​ESTATURA, ²​`NIVEL ESCOLAR`,
## #   ³​`MARCA DE AUTO`, ⁴​`NUMERO DE HIJOS`, ⁵​`CIUDAD-DPTO`
str(TP)
## tibble [62 × 10] (S3: tbl_df/tbl/data.frame)
##  $ PERSONA        : chr [1:62] NA NA "PERSONA 1" "PERSONA 2" ...
##  $ EDAD           : chr [1:62] NA NA "21" "26" ...
##  $ SEXO           : chr [1:62] NA NA "M" "F" ...
##  $ ESTATURA       : chr [1:62] NA NA "1.54" "1.55" ...
##  $ NIVEL ESCOLAR  : chr [1:62] NA NA "MAESTRÍA" "PROFESIONAL" ...
##  $ MARCA DE AUTO  : chr [1:62] NA NA "AUDI" "RENAULT" ...
##  $ NUMERO DE HIJOS: chr [1:62] NA NA "0" "5" ...
##  $ SALARIO        : num [1:62] NA NA 1200000 1250000 900000 800000 950000 2000000 2500000 3500000 ...
##  $ MASCOTA        : chr [1:62] NA NA "SI" "NO" ...
##  $ CIUDAD-DPTO    : chr [1:62] NA NA "Bogotá-Cundinamarca" "Medellín-antioquia" ...
summary(TP)
##    PERSONA              EDAD               SEXO             ESTATURA        
##  Length:62          Length:62          Length:62          Length:62         
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##  NIVEL ESCOLAR      MARCA DE AUTO      NUMERO DE HIJOS       SALARIO       
##  Length:62          Length:62          Length:62          Min.   : 800000  
##  Class :character   Class :character   Class :character   1st Qu.:2000000  
##  Mode  :character   Mode  :character   Mode  :character   Median :3450000  
##                                                           Mean   :3286667  
##                                                           3rd Qu.:4700000  
##                                                           Max.   :6500000  
##                                                           NA's   :2        
##    MASCOTA          CIUDAD-DPTO       
##  Length:62          Length:62         
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
##                                       
## 

3. ¿Existen datos faltantes? ¿Cuántos en total? ¿Cuántos por cada variable? Hay esta cantidad de datos faltantes:

Datos_Faltantes <- sum(is.na(TP)) ;Datos_Faltantes
## [1] 26

Por variable:

apply(is.na(TP),2,sum)
##         PERSONA            EDAD            SEXO        ESTATURA   NIVEL ESCOLAR 
##               2               2               3               2               3 
##   MARCA DE AUTO NUMERO DE HIJOS         SALARIO         MASCOTA     CIUDAD-DPTO 
##               4               3               2               3               2

4. Mencione los problemas, si los tiene, en las variables del data.frame.

Las únicas variables sin problemas son PERSONAS, MASCOTA y SALARIO

Las variables que presentan problemas son:

5. Para la variable EDAD

  1. ¿Se importó como numeric or character? explique
class(TP$EDAD)
## [1] "character"

Se importó como character ya que existe un caracter NA y un 2O.

  1. Identifique las posiciones donde están los registros tipo character
EDAD <- na.omit(TP$EDAD) 
EDAD1 <- as.numeric(EDAD)
## Warning: NAs introducidos por coerción
sum(is.na(EDAD1))
## [1] 2
which(is.na(EDAD1))
## [1] 24 28
  1. Reemplace estos registros por el valor 22.
EDAD1[which(is.na(EDAD1))] <- 22; EDAD1
##  [1] 21 26 30 31 35 65 45 42 52 63 57 58 68 41 42 62 53 51 30 40 60 45 56 22 37
## [26] 39 28 22 61 38 21 50 56 47 20 35 41 58 46 30 26 65 45 46 52 62 57 58 68 41
## [51] 42 62 53 51 30 39 34 24 20 10
  1. Realice un histograma con la variable usando la instrucción hist(datos, col = “pink”) (puede cambiar el color)
##hist(EDAD1, col = "pink")

hist(EDAD1,
 labels = T, #etiquetas de las barras.
 ylim = c(0,18),
 xlim = c(10,80),
 col = "pink",
 xlab = "Intervalos: Edades",
 ylab = "Frecuencia",
 main = "Histograma frecuencia absoluta ",
 freq = T) # frecuencias absolutas

6. Para la variable ESTATURA

a.¿Se importó como numeric or character? Explique

class(TP$ESTATURA)
## [1] "character"

Se importó como tipo character ya que algunos valores tienen coma y otros punto, es un problema de digitación de valores.

  1. Identifique los datos faltantes y sus posiciones. Reemplácelos por el promedio de la posición anterior y siguiente en cada caso.
which(is.na(TP$ESTATURA))
## [1] 1 2
TEstatura <- as.numeric(TP$ESTATURA)

A pesar de ser importada toda la variable como tipo character, al evaluarla como variable numérica se encuentra que los primeros dos valores iniciales que estaban definidos como NA se mantienen, por lo que no hay valores del tipo character dentro del vector.

  1. Identifique las posiciones donde están los registros tipo character

Estas son las posiciones en las que se encuentran los NA:

which(is.na(TEstatura))
## [1] 1 2
  1. Transforme a tipo numeric.
TP$ESTATURA <- as.numeric(TP$ESTATURA)
  1. Calcule la media, la moda, la mediana, el máximo y mínimo de la variable. Represente en una tabla tipo data.frame.
summary(TP$ESTATURA)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.490   1.540   1.650   1.685   1.765   3.450       2
  1. ¿Es conveniente hacer un gráfico de barras? Explique.

No, porque los valores asignados a la variable no presentan una frecuencia concreta, es decir, son muy diferentes entre sí y saldrían demasiadas barras para ser un gráfico conveniente.

7. Para la variable NUMERO_HIJOS

  1. Cambie el nombre de la variable a n.hijos
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
n.hijos <- TP$`NUMERO DE HIJOS`; n.hijos
##  [1] NA   NA   "0"  "5"  "2"  "2"  "1"  "1"  "1"  "1"  "0"  "0"  "4"  "3"  "2" 
## [16] "1"  "2"  "2"  "2"  "1"  "1"  "0"  NA   "2"  "2"  "NA" "3"  "4"  "4"  "0" 
## [31] "0"  "0"  "0"  "2"  "54" "0"  "0"  "2"  "5"  "4"  "6"  "0"  "2"  "3"  "0" 
## [46] "4"  "1"  "1"  "5"  "5"  "3"  "0"  "1"  "20" "3"  "2"  "2"  "1"  "1"  "3" 
## [61] "0"  "0"
  1. Identifique los problemas de la variable.

Tiene varios NA y por otra parte esta almacenada como cadena de texto

  1. Donde encuentre NA o datos inconsistentes reemplace por 3
n.hijos1 <- as.numeric(n.hijos)
## Warning: NAs introducidos por coerción
which(is.na(n.hijos1))
## [1]  1  2 23 26
n.hijos1[c(1,2,23,26)] <- 3; n.hijos1
##  [1]  3  3  0  5  2  2  1  1  1  1  0  0  4  3  2  1  2  2  2  1  1  0  3  2  2
## [26]  3  3  4  4  0  0  0  0  2 54  0  0  2  5  4  6  0  2  3  0  4  1  1  5  5
## [51]  3  0  1 20  3  2  2  1  1  3  0  0
  1. Realice un gráfico de barras con colores.
barplot(table(n.hijos1),
 main="Número de hijos",
 xlab="Hijos",
 ylab="Frecuencias",
 col=c("red","blue","pink","orange","purple","navy","green"),
 ylim=c(0,16)
 )

  1. Haga una tabla de frecuencias y gráfico de barras con la variable: MASCOTA.

La tabla de frecuencias es:

freq_abs <- table(TP$`MASCOTA`); freq_abs
## 
## NO SI 
## 29 30
freq_rel <- prop.table(freq_abs); 

freq_por <- freq_rel*100; 

Tabla_h <- round(cbind(freq_abs,freq_rel,freq_por),3); Tabla_h
##    freq_abs freq_rel freq_por
## NO       29    0.492   49.153
## SI       30    0.508   50.847

Ya que las respuestas son SI y NO, se puede decir que un SÍ equivale a un 1 y un NO equivale a un 0

MASCOTA <- na.omit(TP$MASCOTA); 
MASCOTA[which(TP$MASCOTA == "SI")] <- 1
MASCOTA[which(TP$MASCOTA == "NO")] <- 0
MASCOTA1 <- as.numeric(MASCOTA); 
## Warning: NAs introducidos por coerción
barplot(table(MASCOTA1),
 main="MASCOTAS",
 xlab="RESPUESTAS (SI = 1, NO = 0)",
 ylab="Frecuencias",
 col=c("red","blue"),
 ylim=c(0,35)
 )