Uso como calculadora en la linea de comandos

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

Uso de objetos

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"


Tipos y estructura de datos (Classes)

R tiene los siguientes tipos de datos basicos:

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.

Trabajando con vectores

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:

Indices

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:

Enistar y borrar objectos

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()).

Trabajando con tablas

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.

  • lunes: 16
  • martes: 12
  • miercoles: 8
  • jueves: no hay dato
  • viernes: 14
  • sabado: 4
  • domingo: 10

Ejercicio: Construye un vector para la semana 2 con el nombre semana2.

De que forma podriamos nombrar cada dia de la semana en semana2?

Crear una tabla con 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:

max(tabla$semana1)
## [1] 12
min(tabla[,2])
## [1] NA
mean(tabla$semana2, na.rm = TRUE)
## [1] 10.66667

Estructura de una tabla

#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