Introducción a las bases de datos

  • Manipulación básica

Listas

Bases de datos

datos=data.frame(var1=c(1,2),
  var2=c('si','no')
)

datos

var1 var2 1 1 si 2 2 no

str(datos)

‘data.frame’: 2 obs. of 2 variables: $ var1: num 1 2 $ var2: chr “si” “no”

## cambiar de nombre a las columnas
colnames(datos)=c('a1','a2')
# para pasar el nombre de las variables a mayusculas
colnames(datos)=toupper(names(datos))
datos

A1 A2 1 1 si 2 2 no

colnames(datos)=tolower(names(datos))
library(kableExtra)
kable(datos)
a1 a2
1 si
2 no

Listas

Lista mas inclusiva que la base de datos

# defino un escalar
a1=1
# defino un vector
a2=c('rojo','azul')
# tengo una base de datos
datos
##   a1 a2
## 1  1 si
## 2  2 no
# las puedo poner en una lista

lista1=list(a1,a2,datos)
lista1
## [[1]]
## [1] 1
## 
## [[2]]
## [1] "rojo" "azul"
## 
## [[3]]
##   a1 a2
## 1  1 si
## 2  2 no
## extraer algo de la lista

lista1[[3]]
##   a1 a2
## 1  1 si
## 2  2 no
# si lo quiero guardar

datos1=lista1[[3]]
datos1
##   a1 a2
## 1  1 si
## 2  2 no

Bases de datos

datos_1=data.frame(a1=runif(10,60,80),
  a2=runif(10,1.50,1.80),
  a3=sample(c('M','H'),10,replace=TRUE)
  )

# subconjuntos, estadisticas y cuadros basicos
datos_1
##          a1       a2 a3
## 1  65.36256 1.739116  M
## 2  60.70097 1.661549  M
## 3  71.75730 1.661674  M
## 4  78.84151 1.565510  H
## 5  62.33012 1.601945  H
## 6  64.90316 1.735519  H
## 7  78.55975 1.783271  M
## 8  71.72792 1.743609  M
## 9  66.97603 1.621794  H
## 10 78.71346 1.555502  H
# haciendo subconjuntos
str(datos_1)
## 'data.frame':    10 obs. of  3 variables:
##  $ a1: num  65.4 60.7 71.8 78.8 62.3 ...
##  $ a2: num  1.74 1.66 1.66 1.57 1.6 ...
##  $ a3: chr  "M" "M" "M" "H" ...
dim(datos_1)
## [1] 10  3
# se pueden formas subconjuntos
# nombre de la base de datos mas corchetes
# si quiero obtener la tercera variable
datos_1[,3]
##  [1] "M" "M" "M" "H" "H" "H" "M" "M" "H" "H"
# encabezado
head(datos_1,2)
##         a1       a2 a3
## 1 65.36256 1.739116  M
## 2 60.70097 1.661549  M
# si quieren seleccionar solamente un escalar
datos_1[8,1]
## [1] 71.72792
# puedo obtener los estadisticos basicos
summary(datos_1)
##        a1              a2             a3           
##  Min.   :60.70   Min.   :1.556   Length:10         
##  1st Qu.:65.02   1st Qu.:1.607   Class :character  
##  Median :69.35   Median :1.662   Mode  :character  
##  Mean   :69.99   Mean   :1.667                     
##  3rd Qu.:76.86   3rd Qu.:1.738                     
##  Max.   :78.84   Max.   :1.783
# imputar en nas a la base de datos
datos_1[8,1]=NA
datos_1
##          a1       a2 a3
## 1  65.36256 1.739116  M
## 2  60.70097 1.661549  M
## 3  71.75730 1.661674  M
## 4  78.84151 1.565510  H
## 5  62.33012 1.601945  H
## 6  64.90316 1.735519  H
## 7  78.55975 1.783271  M
## 8        NA 1.743609  M
## 9  66.97603 1.621794  H
## 10 78.71346 1.555502  H
# quitando los nas
complete.cases(datos_1)
##  [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE
# generar un nueva base de datos
datos_2=datos_1[complete.cases(datos_1),]
datos_2
##          a1       a2 a3
## 1  65.36256 1.739116  M
## 2  60.70097 1.661549  M
## 3  71.75730 1.661674  M
## 4  78.84151 1.565510  H
## 5  62.33012 1.601945  H
## 6  64.90316 1.735519  H
## 7  78.55975 1.783271  M
## 9  66.97603 1.621794  H
## 10 78.71346 1.555502  H
# graficas
# una variable numérica
# diagrama de dispersión
plot(datos_1$a2,datos_1$a1,col='#0C8488', cex.axis=.8,pch=15,
  main='Primera gráfica',ylab='Pesos',xlab='Estaturas')