operaciones basicas:
1 + 2 #suma
## [1] 3
4 - 3 #resta
## [1] 1
5 * 5 #multiplicación
## [1] 25
4 / 2 #división
## [1] 2
4 ^ 2 #Exponente
## [1] 16
4 ** 2#Exponente
## [1] 16
!! ¿por qué hay un [1] en cada resultado?
El resultado es un vector, aunque solo consista en un elemento. Por lo tanto, R indica que este el primer [1] elemento de un vector
Operadores en R:
Operador | significado |
---|---|
* | Multiplicación |
- | Resta |
+ | Suma |
^ | Elevar a potencia |
/ | División |
< | Menor que |
> | Mayor que |
<= | Menor o igual que |
>= | Mayor o igual que |
== | Exactamente igual |
!= | Distinto |
Para crear un nuevo objeto se puede usar “=” o “<-”. Este nuevo objeto, se almacenará en la memoria y se puede usar para otras operaciones.
x <- 2 #asignar a la variable x el valor de 2
x
y = 3 #asignar a la variable y el valor de 3
y
#resultado de la suma x + y
x + y
z <- x + y#asiganr el resultado de x + y a la variable z
z
#uso de c para incluir mas de un elemento
numeros <- c(1,2,3,4,5)
numeros
variables <- c(x,y,z)
variables
variables_mas <- variables + 1
variables_mas
variables_expo <- variables ^2
2 ^ variables -> expo_variables
variables_numero <- variables * numeros
#¿que pasara aqui?
Las variables no solo puede contener números, sino caracteres, listas o incluso graficas
caracter <- "siete"
caracter
## [1] "siete"
mix <- c(1,2,"tres")
mix
## [1] "1" "2" "tres"
¿cual serial el resultado de multiplicar la variable mix x 3?
¿Cuales de estas formas de definir una variables es incorrecta?
mi.variable <-
mi_variable <-
mi variable <-
mi-variable <-
R tiene los siguientes tipos de datos basicos:
logical:
valores lógicos, pueden ser TRUE o FALSEnumeric:
numeros realescharacter:
caracteres (letras y/o númoeros). Delimitados por ""interger:
valores enterosNA:
dato no disponibleNaN:
no es un número (not a number)Las estructuras de datos son:
fuente: http://venus.ifca.unican.es/Rintro/_images/dataStructuresNew.png
Si no sabes que tipo de dato contiene una variable, se puede sar la funcions class()
class(numeros)
## [1] "numeric"
class(caracter)
## [1] "character"
class(numeros)
## [1] "numeric"
class(mix)
## [1] "character"
R utiliza funciones para realizar operaciones, por ejemplo class()
. Para utilizar una función deben especificarse determiandos argumentos, los cuales se escriben dentro del parentesis.
Por ejemplo, en la función round()
, la ayuda nos dice que debemos especificar round(x, digits = 0)
donde x es el objecto (número o vector) y digits es el número de decimales.
Ejercicio:
Supon que tienes un cultivo de abulones y tienes que revisarlo todos los dias y contar los organismos muertos. Despues de una semana tienes el siguiente resultado:
1: crea un vector con los valores diarios 2: nombre cada valor con el dia de la semana usando la funcion names()
mortalidad <- c(4,6,0,10,12,8,4)
mortalidad
## [1] 4 6 0 10 12 8 4
names(mortalidad) <- c("Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo")
mortalidad
## Lunes Martes Miercoles Jueves Viernes Sabado Domingo
## 4 6 0 10 12 8 4
#nombrar la mortalidad con la funcion names
Operaciones basicas con vectores
Función | significado |
---|---|
min() | Minimo |
max() | Máximo |
length() | longitud |
range() | intervalo de valores |
sort() | Ordena de menor a mayor |
unique() | Valores unicos |
mean() | Promedio |
sum() | suma |
which() | proporciona los indices TRUE |
Ejercicio: Contesta lo siguiente:
Una tarea común al trabajar con vectores de datos es el de aislar uno o varios valores que cumplen con algún criterio.
Mostrar el primer valor del vector
mortalidad[1]
## Lunes
## 4
Mostrar todos los valores excepto el segundo
mortalidad[-2]
## Lunes Miercoles Jueves Viernes Sabado Domingo
## 4 0 10 12 8 4
Se puede obtener multiples series de elementos al mismo tiempo usando c()
mortalidad[c(1,2:4)]
## Lunes Martes Miercoles Jueves
## 4 6 0 10
o si por el contrario queremos eliminar estos elementos se usa c(-)
mortalidad[-c(1,2:4)]
## Viernes Sabado Domingo
## 12 8 4
Obtener los dias en donde la mortalidad fue mayor a 5
mortalidad > 5
## Lunes Martes Miercoles Jueves Viernes Sabado Domingo
## FALSE TRUE FALSE TRUE TRUE TRUE FALSE
#Mostrar solo los dias donde la mortalidad fue > 5
mortalidad[mortalidad > 5]
## Martes Jueves Viernes Sabado
## 6 10 12 8
#Mediante una variable
mor_5 <- mortalidad > 5
mortalidad[mor_5]
## Martes Jueves Viernes Sabado
## 6 10 12 8
Ejercicio
Identificar:
Las funciones ls()
y objects()
hacen lo mismo: enlistan los objetos que hemos definido en la sesión.
ls()
## [1] "caracter" "expo_variables" "mix" "mor_5"
## [5] "mortalidad" "numeros" "variables" "variables_expo"
## [9] "variables_mas" "variables_numero" "x" "y"
## [13] "z"
Y si queremos borrar objectos, se usa la funcion rm()
Si quieremos borrrar todos los objectos del ambiente, se ejecuta rm(list=ls())
.
Ahora supongamos que tienes que revisar tus estanques por otra semana. Sin embargo, el jueves de la tercera semana no pudiste ir, por lo que no tienes valores para ese dia. Estos son los resultados.
Ejercicio: Construye un vector para la semana 2 con el nombre semana2
.
De que forma podriamos nombrar cada dia de la semana en semana2
?
data.frame
dia_sem <- c("Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo")
tabla <- data.frame(dia = dia_sem, semana1 = mortalidad, semana2 = semana2)
tabla # los dias de la semana aparecen doble
## dia semana1 semana2
## Lunes Lunes 4 16
## Martes Martes 6 12
## Miercoles Miercoles 0 8
## Jueves Jueves 10 NA
## Viernes Viernes 12 14
## Sabado Sabado 8 4
## Domingo Domingo 4 10
tabla <- data.frame(row.names = dia_sem, semana1 = mortalidad, semana2 = semana2)
tabla
## semana1 semana2
## Lunes 4 16
## Martes 6 12
## Miercoles 0 8
## Jueves 10 NA
## Viernes 12 14
## Sabado 8 4
## Domingo 4 10
¿Que tipo de dato es el objecto tabla
?
Ejercicio: Para cada semana, busca el valor minimo, maximo y promedio. Con estos valores crea un vector para cada semana y nombralos Semana1_sum
y Semana2_sum
.
Para esto es posible seguir dos aproximaciones:
tabla[filas , columnas]
$
: tabla$columna
max(tabla$semana1)
## [1] 12
min(tabla[,2])
## [1] NA
mean(tabla$semana2, na.rm = TRUE)
## [1] 10.66667
#muestra las primeras n filas de la tabla
head(tabla)
## semana1 semana2
## Lunes 4 16
## Martes 6 12
## Miercoles 0 8
## Jueves 10 NA
## Viernes 12 14
## Sabado 8 4
#muestra el numero de filas
nrow(tabla)
## [1] 7
#muestra el numero de columnas
ncol(tabla)
## [1] 2
#muestra el nombre de las columnas
colnames(tabla)
## [1] "semana1" "semana2"
#muestra el nombre de las filsa
rownames(tabla)
## [1] "Lunes" "Martes" "Miercoles" "Jueves" "Viernes" "Sabado"
## [7] "Domingo"
otras operaciones utiles para data.frames:
colSums ()
rowSums ()
colMeans()
rowMeans()
Ejercicio: En el objetvo tabla
, crea una columan con el promedio de organismos muertos por dia
Ejercicio: Te diste cuenta que esta nueva columna no te sirve. ¿como la eliminas?
pista: Puedes usar indices o NULL