1-Elementos Básicos de R (Día 1)
1-Elementos Básicos de R (Día 1)
1-Elementos Básicos de R (Día 1)
Elementos básicos de R:
Datos y estructuras de datos
Los principales tipos de datos en R: son numeric (que está reservado para los
números naturales) y integer (reservado para números enteros), character (para las
palabras o “strings”), logical (TRUE o FALSE). Algunos tipos de datos pueden ser
convertidos en otros, así por ejemplo una variable puede tener como valor el número 1,
o el string “1”. Sin embargo, esto no ocurre en todos los casos, ¿se podría convertir el
string “Hola” en un objeto de la clase numeric?
Los 5 tipos de estructuras de datos más importantes en R son: vector, matrix,
array, list y data.frame. Estos pueden ser datos de 1 dimensión (como vector y list),
de 2 dimensiones (matrix y data.frame) o de más dimensiones (array). Por otro lado,
las estructuras de datos también se diferencian de acuerdo con si los elementos que
contienen son todos del mismo tipo o no. Mientras que, en vector, matrix y array
todos los datos tienen que ser del mismo tipo (por ej. numeric), en list y data.frame
esto no es así (por ej.: podemos tener un data.frame que en la primera columna tenga
datos tipo character y en la segunda datos tipo numeric). Además de las estructuras
mencionadas también tenemos los factores. Factor es un tipo especial de vector de
caracteres que se reserva para asignar variables cualitativas, como por ejemplo los
distintos tratamientos dentro de un experimento).
Ejercicios:
1) Asígnale a la variable x el valor 2 y a la variable y el valor 10. Ahora asigna a
la variable w el valor x+y y a la variable z el valor x == y. Observa que tiene
dos signos = y no sólo uno, ¿Por qué? ¿De qué clase son estas dos últimas
variables? Ayuda: la asignación de una variable se realiza con el operador
“<-”, así por ejemplo para asignar el valor “Hola Mundo” a la variable
Saludo debo tipear Saludo<-”Hola Mundo”. Además, tipea en la consola “?
class”.
Tiene dos signos ==, porque este es un operador relacional que arroja como
resultado TRUE o FALSE si se cumple o no la condición que planteó. En este
caso el resultado fue FALSE, debido a que la variable z contiene el valor (TRUE
o FALSE) dependiente del cumplimiento de X==Y, como X es igual a 2 e Y es
igual a 10, la condición no se cumple y el contenido de la variable Z es FALSE.
Las dos últimas variables son clase “numeric”.
x <- 2
y <- 10
w <- x+y
z <- x==y
class(x)
class(y)
2) Crea una variable que se llame “GFP” y asígnale el valor 509. ¿Qué clase de
dato es? Ahora convierte la variable “GFP” en “character”. Ayuda: tipea en la
consola“?as.character”.
GFP <- 509
Día 1
class(GFP)
?as.character
as.character(GFP)
3) Asígnale a la variable GFP el valor “verde” e intenta convertirla en la clase
numeric ¿Qué ocurre?
GFP <- "Verde"
?as.numeric
as.numeric(GFP)
[1]NA
Warning message
NAs introducidos por coerción.
No permite realizar la conversión solicitada debido a que solo se permite la
conversión de numeric a character, y no en viceversa, “verde” ya no puede ser
considerado como un número.
4) Crea un vector que se llame “r1” que contenga 10 números aleatorios elegidos
por vos entre el 0 y el 100 Ayuda: ?c.
?runif
r1 <- c(runif(10, min = 0, max = 100))
r1
5) Con la misma operación que en el ejercicio anterior crea un nuevo vector r2,
ahora realiza las siguientes operaciones: r1+r2, r1*r2, r1/r2. ¿Cómo realiza R
estas operaciones?
r2 <- c(runif(10, min= 0, max=100))
r2
r1 + r2
r1*r2
r1/r2
R realiza estas operaciones realizando cálculo vectorial algebraico simple. Suma,
multiplica y divide elemento por elemento de los vectores utilizados.
6) Intenten ordenar de mayor a menor y de menor a mayor el vector r1. ¿De qué
largo es el vector r1?¿Cómo podría agregarle un elemento al vector r1?
Ayuda ?sort, ?length.
?sort
sort(r1, decreasing= FALSE)
sort(r1, decreasing= TRUE)
length(r1)
r3 <- 30
r4 <- c(r1, r3)
r4
Día 1
##Alternativa##
df_FP <- data.frame(fp, nm)
class(df_FP)
Los dos primeros objetos son de clase vector, mientras que m_fp es de tipo
matriz y df_fp es de tipo data.frame. La diferencia radica en que este primero
toma a todos los valores como de tipo character¸ mientras que el data.frame,
reconoce la serie de datos del vector nm como numeric.
8) Construye un vector con todos los números del 1 al 9. Ayuda comienzo: fin
numeros <- 1:9
9) Construye un vector con todos los números impares del 1 al 9. Ayuda ?seq
?seq
seq(from=1, to=9, by= 2)
10) Crea una matriz m de 3x2 (3 filas y 2 columnas) que contenga en todas las
posiciones el valor 0. Ayuda: ?matrix
?matrix
vector_cero <- c(0,0,0,0,0,0)
matrix(data=vector_cero, nrow=3, ncol=2)
##Alternativa##
m <- matrix(0, nrow = 3, ncol = 2)
m
11) Crea una matriz m de 3x3 que contenga en la posición [1, 1] el número 1, en la
[1, 2] el número 2 y así hasta el número 9 en la posición [3, 3]. Los elementos
de una matriz son [fila, columna]. Ayuda: ?matrix y ejercicio 8).
?matrix
Día 1
nombres1[[1]][3]
nombres2[[3]]
La primera lista tiene un solo elemento, es una lista cuyo único elemento es un
vector de 3 elementos. Al mismo tiempo, la segunda lista es una objeto tipo lista
con 3 elementos, correspondientes a los nombres introducidos.
Ayuda memoria:
A partir del paquete “datasets” generen un data.frame “air” que contiene datos
climáticos de la ciudad de Nueva York, usando el siguiente comando: air <-
datasets::airquality. (Hay algunos paquetes precargados en R, como por
ejemplo datasets, a los que se accede poniendo nombre del paquete::).
15) Imprime en pantalla solamente las primeras filas de air y luego las últimas.
Ayuda ?head, ?, ?tail.
datasets::airquality
air <- datasets::airquality
?head
?tail
dim(air)
head(air)
tail(air)
Ayuda memoria:
air[air$Month==5,]
Día 1
18) ¿En qué día hubo menor radiación solar? ¿De cuánto fue esa radiación?
Ayuda ?which.min y ?min. Al correr el comando min, observamos que el
resultado devuelto es NA. ¿Qué significa? ¿Por qué es el mínimo? Prueba
nuevamente con min, pero pasando el parámetro na.rm = TRUE, es decir,
min(vector, na.rm=TRUE). ¿Qué obtenemos ahora?
head(air)
?min
air$Solar.R
min(air$solar.R)
min(air$Solar.R, na.rm=TRUE)
sort(radiacion, decreasing=TRUE)
?which.min
air[which.min(air$Solar.R),]
19) ¿Cuál fue la temperatura el 27 de agosto? Ayuda: ?which, & (este símbolo se
llama ampersand y es equivalente a “y”. Permite concatenar dos condiciones,
por ejemplo, quiero que el día sea el 27 y el mes sea agosto. Solo aquellos
registros que cumplan ambas condiciones van a incluirse).
air
head(air)
air[which(air$Month==8&air$Day==27),]
air[which(air$Month==8&air$Day==27),][[4]]
20) ¿Cuál fue la temperatura los meses de agosto y septiembre? Ayuda ?which, |
(este símbolo se llama pipe o tubería y es equivalente a “o”. Permite
concatenar dos condiciones, por ejemplo: quiero que el mes sea agosto o el mes
sea septiembre. Solo aquellos registros que cumplan alguna de las dos
condiciones van a incluirse.)
air[which(air$Month==8|air$Month==9),]
Temp.Agosto <- air[air$Month==8,][[4]]
Temp.Agosto
Temp.Septiembre <- air[air$Month==9,][[4]]
Temp.Septiembre
21) Selecciona todas las filas de air del mes de mayo cuya radiación solar sea
mayor a 150.
air[which(air$Month==5&air$Solar.R>150),]
air[which(air$Month==5&air$Solar.R>150),]
[[2]]
22) La temperatura en el data.frame está expresada en grados Fahrenheit, genera
una nueva columna que se llame temp_c con las temperaturas en grados
Celsius. Ayuda: °C (°F - 32)/1.8.
air$Temp
Temp_F <- air$Temp
Temp_C <- (Temp_F-32)/1.8
Día 1