1 Objetos para Almacenamiento de datos en R

1.1 VECTORES:

Cada dato recibe un índice comenzando por 1 según el orden que ocupa el dato en el vector:

  • Podemos acceder a cada dato por su índice

  • Para crear un vector usamos la siguente instrucción:

c(dato1,dato2,dato3)

Vector_Datos_Numerico<- c(20,15,10,8,45,6,76,34)
Vector_Datos_caracter<-c("caracter1","carcter2","caracter3")

El acceso a algún dato del vector se puede hacer según la siguiente expresión:

dato_Posicion_i=1Vector_Datos[i]

Por ejemplo:

Vector_Datos_Numerico[1]
## [1] 20
  • datos[-2]:
  • datos[c(1,3,4)]: posiciones 1, 3 y 4
  • datos[2:4] #posiciones 2 a 4
Vector_Datos_Numerico[-2] #todos los datos  menos el cuarto dato 
## [1] 20 10  8 45  6 76 34
Vector_Datos_Numerico[c(1,3,4)] # posiciones 1, 3 y 4
## [1] 20 10  8
Vector_Datos_Numerico[2:4] #posiciones 2 a 4
## [1] 15 10  8

Modificación de Datos

Vector_Datos_Numerico[1]=200

Nombres de los Elementos de un Vector

Vector=c(1:3)

names(Vector)=c("Dato1","Dato2","Dato3")

1.1.1 Funciones Basicas de Vectores

length(Vector_Datos_Numerico)  # longitud del vector
## [1] 8
sum(Vector_Datos_Numerico)  # Suma los elementos del vector
## [1] 394
min(Vector_Datos_Numerico)   # Mínimo de los elementos del vector
## [1] 6
max(Vector_Datos_Numerico)    # Máximo de los elementos del vector
## [1] 200
mean(Vector_Datos_Numerico)  # Promedio de los elementos del vector
## [1] 49.25
sort(Vector_Datos_Numerico)  # Ordena los elementos del vector
## [1]   6   8  10  15  34  45  76 200

1.2 Matrices y Data frames

1.2.1 Matrices

Una matriz en R es una colección de datos del mismo tipo indexados por filas y columnas.

La expresión para crear matrices es la siguiente:

matrix(data, nrow, ncol, byrow=F)

donde:

data: datos que conforman

nrow: número de filas de la matriz.
ncol: número de columnas de la matriz.
byrow: Orden en que se almacenan los datos de la matriz. Por defecto se colocan por columnas.

Matriz=matrix(1:6,nrow=2,byrow=T)

Matriz_vacia=matrix(,3,4)

Matriz_vacia[1,1]=8
Matriz_vacia[2,]=7
Matriz_vacia[,3]=9

colnames(Matriz_vacia)<-c("Columna1","Columna2","Columna3","Columna4")
rownames(Matriz_vacia)<-c("fila1","fila2","fila3")

Matriz_vacia[,"Columna1"]
## fila1 fila2 fila3 
##     8     7    NA
Matriz_vacia["fila1",]
## Columna1 Columna2 Columna3 Columna4 
##        8       NA        9       NA

1.2.2   Data Frames

Los Data Frames son estructuras de datos similares a las matrices, pero en donde las columnas pueden ser de diferente tipo:

Vble_Num = c(20, 80, 65) 
Vble_cat = c("CATEGORIA 1", "CATEGORIA 2", "CATEGORIA 3") 
Vble_logica = c(TRUE, FALSE, TRUE) 
data.frame= data.frame(Vble_cat,Vble_Num, Vble_logica)       # df is a data frame

1.2.2.1 Subconjuntos de un Data Frame.

Se pueden obtener subconjuntos de datos de un data frame que coincida con ciertas claves o índices que pueden estar en otro tipo de estructura para almacenar datos.

#View(airquality) # airquality es una base de datos de un repositorio en internet 

Subconjunto=subset(airquality, Temp > 80, select = c(Ozone, Temp))

#View(Subconjunto)

1.3 Listas

Una lista es un conjunto de objetos que pueden ser de distintos. Cada posición de la lista contiene un objeto diferente con índice y puede tener Nombre:

Lista_1=list("posicion_1"=c(4,5,7),"posicion_2"=matrix(1,3,3))

2 Creación de funciones en R

Dados unos parámetros y/o variables de entrada, se obtiene una salida.

Crear_Data_Frame=function(variable1,variable2,variable3){

  data_frame= data.frame(variable1,variable2,variable3)       # df is   
  return(data_frame)
}

Utilizando la función creada

Data_frame_nuevo=Crear_Data_Frame(c(1,2,3),c("A","B","C"), c("Categoria_1","Categoria_1", "Categoria_2"))

3 Cargar datos a R

Los datos pueden ser cargados a través de diferentes formatos como archivos planos csv, txt, xls, etc

Ejemplo:

library(readxl)

A1_004012015n <- read_excel("~/LIQUIDEZ_Y_RESISTENCIA_ITM/capacitacion Bases de datos en R/A1_004012015n.xls")
#View(A1_004012015n)

4 Caso de uso: Creación de seires de tiempo de las cuentas PUC

Esta función conforma la serie de tiempo de determinada cuentas PUC.

*Argumentos de la funcion“:

* VECTOR_CUENTAS: vector con las cuentas del PUC que se quieren extrer.  
* lista_hojas:Una lista que contiene en cada posición una hoja de excel.  

Por ejemplo: * VECTOR_CUENTAS=c(“100000.000000”,“110000.000000”,“110500.000000”) * lista_hojas=lista_15_16

4.1 Cargar las hojas de cálculo en R

Las hojas se almcenan en una lista. Cada índice de la lista corresponde a una hoja de cálculo con el PUC de determinado mes.

temp = list.files(pattern="*.xls") # Archivo temporal con el nombre de los archivos xls.

lista_15_16 <- list() # Creación de lista vacia 

for (x in 1:24) {
  lista_15_16[[x]] <- read_excel(temp[x], sheet=1, col_names = FALSE)
}

4.2 Conformación de series de tiempo de las cuentas PUC.

Esta función conforma la serie de tiempo de determinada cuentas PUC.

4.3 Argumentos de la función:

  • VECTOR_CUENTAS: vector con las cuentas del PUC que se quieren extrer
  • lista_hojas: Una lista que contiene en cada posición una hoja de excel.

Por ejemplo: * VECTOR_CUENTAS=c(“100000.000000”,“110000.000000”,“110500.000000”) * lista_hojas=lista_15_16

VECTOR_CUENTAS=c("100000.000000","110000.000000","110500.000000")
lista_hojas=lista_15_16


EXTRAER_CUENTAS_PUC=function(VECTOR_CUENTAS,lista_hojas){
  
  
  
  i=1 # Indice de la lista 
  D=as.data.frame(lista_hojas[i]) # Se convierte el objeto de la posición i de la lista en un data frame 
  Q=which(D[,2] == "ACTIVO")-1 #obtener el indice de la fila donde esta ACTIVO
  D=D[Q:length(D[,1]),] #  Limitar a D desde la fila Q=9 hasta la ultima fila "length(D[,1])"
  colnames(D)<-D[1,] # Asignación de nombres a las columas del Data Frame
  D=D[-1,] # Eliminar la primera fila del Data Frame
  colnames(D)[1]<-"NUMERO_PUC" # Asignar nombre a la columna 1
  colnames(D)[2]<-"CUENTA" # Asignar nombre a la columna 2
  
  # Con la función subset obtengo subconjuntos de un conjunto de datos 
  
  GIROS_Y_FINANZAS<-subset(D, NUMERO_PUC %in% VECTOR_CUENTAS, select = c(NUMERO_PUC,CUENTA, grep("GIROS",colnames(D)))) 
  
class(GIROS_Y_FINANZAS[,3])
  
GIROS_Y_FINANZAS[,grep("GIROS",colnames(GIROS_Y_FINANZAS))]<-as.numeric(GIROS_Y_FINANZAS[,grep("GIROS",colnames(GIROS_Y_FINANZAS))])
  
class(GIROS_Y_FINANZAS[,3])

  
  for (i in 2:24){
    D=as.data.frame(lista_hojas[i])
    Q=which(D[,2] == "ACTIVO")-1 
    D=D[Q:length(D[,1]),]
    colnames(D)<-D[1,]
    D=D[-1,]
    colnames(D)[1]<-"NUMERO_PUC"
    colnames(D)[2]<-"CUENTA"
    
    GIROS_Y_FINANZAS_2<-subset(D, NUMERO_PUC %in% VECTOR_CUENTAS, select = c(grep("COLTEFINANCIERA",colnames(D))))
    
    
    GIROS_Y_FINANZAS=cbind(GIROS_Y_FINANZAS,GIROS_Y_FINANZAS_2)
    
  }
  
  
  colnames(GIROS_Y_FINANZAS)[3:26]=as.character(seq(as.Date("2015/1/1"), as.Date("2016/12/1"), "month"))
  
  row.names(GIROS_Y_FINANZAS)=GIROS_Y_FINANZAS[,2]
  GIROS_Y_FINANZAS=GIROS_Y_FINANZAS[,-2]
  
  
  return(GIROS_Y_FINANZAS)
  
}



CUENTAS_PUC=EXTRAER_CUENTAS_PUC(VECTOR_CUENTAS,lista_15_16)