El tipo de dato numérico en R esta compuesto por tipos de datos double (reales) y enteros (numeric) . Puedes comprobar si un objeto es numérico con la función mode o si la función is.numeric devuelve TRUE.
¿Que es un dato double?
datos double en R es la representación de un objeto numérico de doble precisión. Ten en cuenta que, de forma predeterminada, todos los números son dobles en R y que “Inf, -Inf, NaN”, la notación científica y la notación hexadecimal de números también son doubles
mode(55) # "numeric"
is.numeric(3) # TRUE)
podemos usar otras funciones para identificar la variable como numérica, ejemplo función class
numero <- 34.80
class(numero) #numeric
## [1] "numeric"
El tipo de dato entero se puede crear agregando una L a un número. Este tipo de datos es útil si quieres pasar algún objeto de R a una función de C o FORTRAN que espera un valor entero, por lo que este tipo de datos generalmente no es necesario. Puedes verificar el tipo de datos con la función is.integer.
y <- 2L
typeof(y) # "integer"
## [1] "integer"
is.integer(3) # FALSE
## [1] FALSE
is.integer(3L) # TRUE
## [1] TRUE
Los caracteres o las cadenas de caracteres son símbolos, letras, palabras o frases dentro de comillas dobles o simples. Puedes verificar que algún objeto es de tipo carácter con la función is.character.
character <- "a"
typeof(character) # "character"
## [1] "character"
is.character(character) # TRUE
## [1] TRUE
El tipo logical es la forma que tiene R para los datos binarios. Usados en test lógicos son conocidos como datos booleano o lógico está compuesto por los valores TRUE, FALSE y NA. Nótese que puedes usar T y F en lugar de TRUE o FALSE. Sin embargo, esto no se recomienda porque podrías sobrescribir el valor de T o F pero no el de TRUE o FALSE, como se muestra en el siguiente bloque de código.
F # FALSE
## [1] FALSE
a <- T
# Puedes nombrar una variable como T o F
F <- a
F # TRUE
## [1] TRUE
# No puedes nombrar una variable como TRUE o FALSE
a <- TRUE
otro ejemplo
a <- 2
b <- 4
a == b # ¿es igual a b?
## [1] FALSE
## [1] FALSE
Una variable factor es una variable categórica. Los vectores de caracteres a menudo se almacenan como factores para explotar funciones para tratar datos categóricos. Por ejemplo, en análisis de regresión.
vector_mes_malo <- factor(c("enero", "febrero", "marzo", "abril", "enero"))
class(vector_mes_malo)
## [1] "factor"
El tipo de dato complejo es un objeto que incluye un numero imaginario (i), el tipo de dato imaginario tiene una parte real y una parte imaginaria (parte que incluye la (i)). Como los números imaginarios generalmente no se usan en estadística, este tipo de datos no es muy común. La función para verificar el tipo de datos es is.complex.
1 + 3i
## [1] 1+3i
typeof(1 + 3i) # "complex"
## [1] "complex"
is.complex(1 + 3i)
## [1] TRUE
Almacena sus valores internamente como el número de días transcurridos desde el 1 de enero de 1970; para las fechas anteriores el número de días se cuenta en sentido negativo.
R dispone en su paquete base de dos clases específicamente diseñadas para tratar con datos de tipo fecha/hora: Date (solo para fechas) y POSIXt (además de la fecha incluye hora y huso horario); esta última clase contiene dos subclases, POSIXct y POSIXlt que se diferencian simplemente en la forma en que almacenan internamente la fecha y la hora
ejemplo, Si introducimos la fecha en otro formato (por ejemplo “dia/mes/año”), hemos de indicarlo al usar as.Date para que R pueda interpretar la fecha correctamente
navidad=as.Date("25/12/2013",format="%d/%m/%Y") #[1] "2013-12-25"
navidad
## [1] "2013-12-25"
Los vectores se caracterizan por tener una dirección y una magnitud, las componentes de un vector se guardan en coordenadas. Así como una variable puede almacenar un objeto, un vector puede almacenar varios objetos en un orden determinado. Los vectores pueden representar la columna de una tabla de datos, no pueden confundirse entre números con caracteres, deben ser construidos con el mismo tipo de dato.
Los vectores se crean con la función c (la c es de combinar) y pueden ser de tipo numérico (1234), carácter (abcd) o lógico (true or false).
En este ejercicio vamos a: 1. Crear vectores en un script 2. Realizar opraciones aritméticas con vectores 3. Seleccionar elementos en un vector
crear vector carácter con nombre de parametros fisicos
temperatura <- c("bogota", "pereira", "medellin","cartagena")
crear vector numérico con valores de los parametros del vector nombre
temperatura_valor <- c(13, 25, 30, 33)
crear vector lógico sobre los datos, si estan por encima (VERDADERO) o debajo (FALSO) del promedio de las ciudades del vector temperatura (14, 26, 27, 31).
comparacion<- c(FALSE, FALSE, TRUE, TRUE)
sumar 2 al vector temperatura
temperatura_valor+2
## [1] 15 27 32 35
dividir al vector temperatura
temperatura_valor/2
## [1] 6.5 12.5 15.0 16.5
crear un vector con otros valores
temperatura_valor2 <- c(25, 30, 27, 33)
calcular diferencia entre los vectores de temperatura
temperatura_valor - temperatura_valor2
## [1] -12 -5 3 0
calcular la longitud del vector de temperatura
length(temperatura)
## [1] 4
calcular el promedio del vector de temperatura_valor
mean(temperatura_valor)
## [1] 25.25
seleccionar la tercera posición del vector temperatura para saber a que ciudad pertenece
temperatura[3]
## [1] "medellin"
seleccionar la primera y la última ciudad
temperatura[c(1,4)]
## [1] "bogota" "cartagena"
crear condición lógica
temperatura_valorbajo <- temperatura_valor < 29
mostrar condición para ver TRUE/FALSE
temperatura_valorbajo
## [1] TRUE TRUE FALSE FALSE
mostrar temperaturas bajas
temperatura_valor[temperatura_valorbajo]
## [1] 13 25
mostrar nombres de películas con puntuaciones bajas
temperatura[temperatura_valorbajo]
## [1] "bogota" "pereira"
Una matriz de dos columnas y un grafico de dispersión son practicamente lo mismo. ya que son de coordenadas x,y una matriz es una forma de acomodar los datos que tienen filas y columnas las matrices pueden almacenar tipos de archivo numeros, caracter o logicos, pero no combinados se pueden construir combinando varios vectores.
crear matrices relacionar operaciones aritmeticas Seleccionar elementos de una matriz
para matrices se tiene en cuenta c como el numero, nrow filas ncol columnas y byrow organiza por filas, T es de verdad y sin T se toma como predeterminado el falso.
A<- matrix(c(1:9),nrow = 3,ncol = 3)
B<- matrix(c(10:18),nrow = 3,ncol = 3,byrow = T)
datos<- c(1,5,7,4,5,6,8,4,6) #vector datos numerico
C<- matrix(c(1,5,7,4,5,6,8,4,6),nrow = 3,ncol = 3,byrow = T)
D<- matrix(c(1,5,7),nrow = 3,ncol = 1)
suma
A+B
## [,1] [,2] [,3]
## [1,] 11 15 19
## [2,] 15 19 23
## [3,] 19 23 27
Resta
A-B
## [,1] [,2] [,3]
## [1,] -9 -7 -5
## [2,] -11 -9 -7
## [3,] -13 -11 -9
Multiplicación por constante
A*3
## [,1] [,2] [,3]
## [1,] 3 12 21
## [2,] 6 15 24
## [3,] 9 18 27
Multiplicación de matrices
A*B
## [,1] [,2] [,3]
## [1,] 10 44 84
## [2,] 26 70 120
## [3,] 48 102 162
si se quiere una multiplicación matricial debe tener % si no multiplica termino a termino.
A%*%B
## [,1] [,2] [,3]
## [1,] 174 186 198
## [2,] 213 228 243
## [3,] 252 270 288
Diagonal
diag(A)
## [1] 1 5 9
Inversa
la inversa se puede sacar siempre y cuando la determinante sea diferente de 0
solve(C)
## [,1] [,2] [,3]
## [1,] -0.1428571 0.04761905 0.1190476
## [2,] -0.5714286 1.19047619 -0.5238095
## [3,] 0.5714286 -0.85714286 0.3571429
Traspuesta
t(A)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
solucion de sistema de matrices
solve(C,D)
## [,1]
## [1,] 0.9285714
## [2,] 1.7142857
## [3,] -1.2142857
en un dataframe se pueden poner caracteres tipo logico, numericos, enteros, entre otros los dataframe guardan diferentes tipos de datos en columnas
Inicialmente, se deben crear los vectores con la información que se desea guardar
Temperatura <- c(25, 27, 29, 25, 27, 33, 31, 27, 26, 30, 32, 33)
Temperatura
## [1] 25 27 29 25 27 33 31 27 26 30 32 33
Precipitacion <- c(55, 47, 50, 56, 54, 25, 27, 50, 50, 27, 26, 25)
Precipitacion
## [1] 55 47 50 56 54 25 27 50 50 27 26 25
fecha<- c("1978-01-01","1979-02-12","1980-02-15", "1981-01-29","1982-01-25", "1983-01-02",
"1984-02-07", "1985-04-07","1986-01-25","1987-03-06","1988-03-25","1989-02-07")
Posteriormente, se guardan los datos dentro de una variable, que para este caso se llamó tabla, y mediante el comando view, se observan los valores categorizados
tabla <- data.frame(fecha,Temperatura,Precipitacion)
tabla
View(tabla)
Posteriormente, es posible determinar la observación de un grupo de datos dentro de la tabla generada, de los 12 datos que contienen los vectores, (fecha, temperatura y precipitación), es posible seleccionar los datos, por ejemplo, desde el 3 al 7. como se muestra a continuación.
subtabla = tabla[3:7,]
subtabla
View(subtabla)
Asimismo, si se quiere identificar las fechas en que la temperatura fue la misma, mayor o menor, se puede realizar un filtro del mismo. (Por ejemplo, generar una tabla con las temperaturas cuyas fechas fue 27C)
tabla3=tabla[tabla$Temperatura==27,]
tabla3
View(tabla3)
las listas guardan diferentes objetos en una misma estructura de datos en R permiten agrupar o contener dataframes, matrices y vectores
Objetivo: estudiar qué son las listas en R |
---|
En este ejercicio vamos a: |
Cargando datos de videos anteriores
informacion parámetros fisicos.
Temperatura <- c(25, 27, 29, 25, 27, 33, 31, 27, 26, 30, 32, 33)
Temperatura
## [1] 25 27 29 25 27 33 31 27 26 30 32 33
Precipitacion <- c(55, 47, 50, 56, 54, 25, 27, 50, 50, 27, 26, 25)
Precipitacion
## [1] 55 47 50 56 54 25 27 50 50 27 26 25
fecha<- c("1978-01-01","1979-02-12","1980-02-15", "1981-01-29","1982-01-25", "1983-01-02",
"1984-02-07", "1985-04-07","1986-01-25","1987-03-06","1988-03-25","1989-02-07")
informacion de afluentes del rio magdalena con un caudal medio (m3/s) y el rendimiento promedio (l/s/km2) para el año 2001.
rio <- c("Magdalena", "Suaza", "Paez", "Neiva", "Yaguara", "Saldana", "Bogota", "Sumapaz", "Totare")
caudalmedio <- c(7000, 44, 181, 16, 14, 310, 39, 43, 7)
rendimientoprom <- c(26.42, 27.76, 115.65, 13.34, 9.27, 33.55, 6.51, 13.69, 4.59)
crear diferentes estructuras de datos en R,
matriz_afluentes <- matrix(c(rio, caudalmedio, rendimientoprom),
nrow = 9,
ncol = 3)
vector_fecha <- fecha
crear lista en R
lista_ejemp <- list(vector_fecha,
matriz_afluentes)
mostrar lista
lista_ejemp
## [[1]]
## [1] "1978-01-01" "1979-02-12" "1980-02-15" "1981-01-29" "1982-01-25"
## [6] "1983-01-02" "1984-02-07" "1985-04-07" "1986-01-25" "1987-03-06"
## [11] "1988-03-25" "1989-02-07"
##
## [[2]]
## [,1] [,2] [,3]
## [1,] "Magdalena" "7000" "26.42"
## [2,] "Suaza" "44" "27.76"
## [3,] "Paez" "181" "115.65"
## [4,] "Neiva" "16" "13.34"
## [5,] "Yaguara" "14" "9.27"
## [6,] "Saldana" "310" "33.55"
## [7,] "Bogota" "39" "6.51"
## [8,] "Sumapaz" "43" "13.69"
## [9,] "Totare" "7" "4.59"
cambiar nombre de dataframe
names(lista_ejemp) <- c('vector','matriz')
mostrar lista (sí, otra vez)
lista_ejemp
## $vector
## [1] "1978-01-01" "1979-02-12" "1980-02-15" "1981-01-29" "1982-01-25"
## [6] "1983-01-02" "1984-02-07" "1985-04-07" "1986-01-25" "1987-03-06"
## [11] "1988-03-25" "1989-02-07"
##
## $matriz
## [,1] [,2] [,3]
## [1,] "Magdalena" "7000" "26.42"
## [2,] "Suaza" "44" "27.76"
## [3,] "Paez" "181" "115.65"
## [4,] "Neiva" "16" "13.34"
## [5,] "Yaguara" "14" "9.27"
## [6,] "Saldana" "310" "33.55"
## [7,] "Bogota" "39" "6.51"
## [8,] "Sumapaz" "43" "13.69"
## [9,] "Totare" "7" "4.59"
en general para seleccionar elementos se utiliza un par de corchetes con las listas es un poco diferente ya que se utilizan dobles corchetes, esto puede ser util para diferenciar un dataframe con una matriz una vez se tiene seleccionado el elemento de la lista se utilizan las formas de seleccion que se han visto para otros objetos
Seleccionar vector de la lista
lista_ejemp[['vector']]
## [1] "1978-01-01" "1979-02-12" "1980-02-15" "1981-01-29" "1982-01-25"
## [6] "1983-01-02" "1984-02-07" "1985-04-07" "1986-01-25" "1987-03-06"
## [11] "1988-03-25" "1989-02-07"
Seleccionar el tercer elemento del vector de la lista
lista_ejemp[['vector']][3]
## [1] "1980-02-15"
Seleccionar fila 5 y columna 3 de la matriz de la lista
lista_ejemp[['matriz']][5,3]
## [1] "9.27"
agregar dataframe a lista
lista_ejemp[['data_frame']] <- vector_fecha
revisar que está el dataframe
lista_ejemp
## $vector
## [1] "1978-01-01" "1979-02-12" "1980-02-15" "1981-01-29" "1982-01-25"
## [6] "1983-01-02" "1984-02-07" "1985-04-07" "1986-01-25" "1987-03-06"
## [11] "1988-03-25" "1989-02-07"
##
## $matriz
## [,1] [,2] [,3]
## [1,] "Magdalena" "7000" "26.42"
## [2,] "Suaza" "44" "27.76"
## [3,] "Paez" "181" "115.65"
## [4,] "Neiva" "16" "13.34"
## [5,] "Yaguara" "14" "9.27"
## [6,] "Saldana" "310" "33.55"
## [7,] "Bogota" "39" "6.51"
## [8,] "Sumapaz" "43" "13.69"
## [9,] "Totare" "7" "4.59"
##
## $data_frame
## [1] "1978-01-01" "1979-02-12" "1980-02-15" "1981-01-29" "1982-01-25"
## [6] "1983-01-02" "1984-02-07" "1985-04-07" "1986-01-25" "1987-03-06"
## [11] "1988-03-25" "1989-02-07"
eliminar un elemento de lista (en este caso la matriz)
lista_ejemp[['matriz']] <- NULL
revisar que no está la matriz
lista_ejemp
## $vector
## [1] "1978-01-01" "1979-02-12" "1980-02-15" "1981-01-29" "1982-01-25"
## [6] "1983-01-02" "1984-02-07" "1985-04-07" "1986-01-25" "1987-03-06"
## [11] "1988-03-25" "1989-02-07"
##
## $data_frame
## [1] "1978-01-01" "1979-02-12" "1980-02-15" "1981-01-29" "1982-01-25"
## [6] "1983-01-02" "1984-02-07" "1985-04-07" "1986-01-25" "1987-03-06"
## [11] "1988-03-25" "1989-02-07"