#tipos de datos

#fechas

#solo fecha
#la funcion as.date sirve para dar formato de fecha a una fecha mostrando solo aaaa-mm-dd
as.Date("2024/07/28")
## [1] "2024-07-28"
#fecha y hora
as.POSIXct("2024-07-28 23:22:00")
## [1] "2024-07-28 23:22:00 -05"
#LA FUNCION SYS.TIME SIRVE para retornar la fecha actual del sistema incluyendo la hora
#la funcion Sys.date sirve para retornar solamente la fecha actual sin la hora

Sys.time()
## [1] "2024-07-30 14:46:33 -05"
Sys.Date()
## [1] "2024-07-30"

#estructura de datos #vector

""
## [1] ""
nombres<-c("jose","jacqueline","camilo","sarita")
table(nombres)
## nombres
##     camilo jacqueline       jose     sarita 
##          1          1          1          1
codigospaises<-c(espana=180,canada=300,colombia=500)
codigospaises
##   espana   canada colombia 
##      180      300      500
names(codigospaises)
## [1] "espana"   "canada"   "colombia"
table(codigospaises)
## codigospaises
## 180 300 500 
##   1   1   1
#para acceder a una posicion especifica de un vector usamos el nombre del vector y la possicion que queremos consultar

codigospaises[3]
## colombia 
##      500
codigospaises[1:2]
## espana canada 
##    180    300
codigospaises[c(1,3)]
##   espana colombia 
##      180      500
class(codigospaises)
## [1] "numeric"
#Funciones para generar vectores
#la funcion seq sirve para generar una secuencia numerica de valor 1 hasta N, siendo N numero limite de la secuencia.

seq(1:10)
##  [1]  1  2  3  4  5  6  7  8  9 10
help("seq")
## starting httpd help server ... done
seq(0,100,length.out=5)
## [1]   0  25  50  75 100
a<- c(1,"a",3.14)

matrices

mat<- matrix(1:12,nrow = 3,ncol = 4,byrow = TRUE)
mat
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
letras<-c("a","b","c","d","e","f","g","h","i")
matrixletras<-matrix(letras,nrow=3,ncol = 3,byrow=FALSE)
matrixletras
##      [,1] [,2] [,3]
## [1,] "a"  "d"  "g" 
## [2,] "b"  "e"  "h" 
## [3,] "c"  "f"  "i"
vec_numeros <- c(3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)
matrixejemplo<- matrix(1:16,nrow = 4,ncol = 4,byrow = TRUE)
matrixejemplo
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
## [4,]   13   14   15   16
matrixejemplo2 <- matrix(vec_numeros,nrow = 4,ncol = 4,byrow = FALSE)
matrixejemplo2
##      [,1] [,2] [,3] [,4]
## [1,]    3    7   11   15
## [2,]    4    8   12   16
## [3,]    5    9   13   17
## [4,]    6   10   14   18
#La funcion rownames sirve para asignarle nombres a las filas de una matriz
rownames(matrixejemplo) <- c("F1","F2","F3","F4")

matrixejemplo
##    [,1] [,2] [,3] [,4]
## F1    1    2    3    4
## F2    5    6    7    8
## F3    9   10   11   12
## F4   13   14   15   16
#colnames la funcion colnames sirve para asignarle nombres alas columnas de una matriz

colnames(matrixejemplo)<-c("C1","C2","C3","C4")
matrixejemplo
##    C1 C2 C3 C4
## F1  1  2  3  4
## F2  5  6  7  8
## F3  9 10 11 12
## F4 13 14 15 16
#instruccion para acceder a una posicion de una matriz [fila,columna]
matrixejemplo[4,2]
## [1] 14
matrixejemplo[2,3]
## [1] 7
matrixejemplo[1,]
## C1 C2 C3 C4 
##  1  2  3  4
matrixejemplo[,4]
## F1 F2 F3 F4 
##  4  8 12 16

#listas ##las listas son un objeto que permite guardar la informacion o caracteristicas de algo.

b<-list(numero=1,texto="hola",logico=TRUE,decimal=pi)
print(b)
## $numero
## [1] 1
## 
## $texto
## [1] "hola"
## 
## $logico
## [1] TRUE
## 
## $decimal
## [1] 3.141593
listaejemplo<- list(numero=40,texto="aprendizaje",logico=TRUE,decimal=pi)
print(listaejemplo)
## $numero
## [1] 40
## 
## $texto
## [1] "aprendizaje"
## 
## $logico
## [1] TRUE
## 
## $decimal
## [1] 3.141593
#Crear lista con los datos de una persona nombre, edad, genero, tipo_sangre
lsDatosPersona <- list(nombre="Astrid",edad=40,genero="F",tipo_sangre="A+")
print(lsDatosPersona)
## $nombre
## [1] "Astrid"
## 
## $edad
## [1] 40
## 
## $genero
## [1] "F"
## 
## $tipo_sangre
## [1] "A+"
#Acceder a los elementos de una lista
lsDatosPersona$tipo_sangre
## [1] "A+"
lsDatosPersona$nombre
## [1] "Astrid"
lsDatosPersona["nombre"]
## $nombre
## [1] "Astrid"
lsDatosPersona[2]
## $edad
## [1] 40

#Dataframe ##un dataframe en leguaje R permite darle formato a la cuadricula que contiene la matriz

df_mat<-as.data.frame(mat)
df_mat
##   V1 V2 V3 V4
## 1  1  2  3  4
## 2  5  6  7  8
## 3  9 10 11 12
df_ejemplo<-as.data.frame(matrixejemplo)
df_ejemplo
##    C1 C2 C3 C4
## F1  1  2  3  4
## F2  5  6  7  8
## F3  9 10 11 12
## F4 13 14 15 16
df<-data.frame(nombres=c("Rodolfo","Andres","Maria Daniela"),edades=c(23,24,25))
df
##         nombres edades
## 1       Rodolfo     23
## 2        Andres     24
## 3 Maria Daniela     25
dfRecibosCasa <- data.frame(Tipo=c("Agua","Energia","Gas","Internet"),valor=c(56000,230000,15000,90000),estado_pago=c("Pagado","Pendiente","Pagado","Pagado"))
dfRecibosCasa
##       Tipo  valor estado_pago
## 1     Agua  56000      Pagado
## 2  Energia 230000   Pendiente
## 3      Gas  15000      Pagado
## 4 Internet  90000      Pagado