---
title: "Introducción a R"
output: html_document
date: "`r Sys.Date()`"
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```






### 1. Valores numéricos: 
Con R podemos manejar vectores numéricos y realizar operaciones básicas:
```{r}
       x<-11
       x
       3*x
       y<-x^2; y
```

### 2. Comandos o funciones:
Disponemos de gran variedad de funciones, que ejecutamos como comandos:
```{r}
       log(x)
       y<-log(x, base=3)
       abs(x) 
       exp(x) 
       sqrt(x) 
       sin(x)
       cos(x)
       tan(x)
       round(sqrt(x),2) #redondea con las cifras decimales que le digamos
       floor(log(x)) #calcula la parte entera de un número
```
    
### 3. Vectores: 
Para crear vectores se utiliza la función  "c()".
```{r}
       x<-c(1,2,3,4,5,6)
       z<-x+100 
       x^2 
       sin(x)
       y<-c(x,9,10,11)
       z<-c(7,4,x,2*x,x^2)
```
Podemos crear vectores no numéricos:
```{r}
      v<-c("verde","verde","rojo","azul","verde","rojo","azul","verde")
      v
```

Si queremos formar un vector con números consecutivos podemos utilizar la función siguiente:
```{r}
       x<-(1:6) #cuando son números consecutivos
       x<-(6:1)
```

También podemos usar la función "rep()" si se repiten elementos:
```{r}
       y<-rep(1,10) 
       y<-rep(x^2 , 5) 
       y<-rep(c(1,2,3),c(2,3,1))
```

O la función "seq()" si particionamos un intervalo:
```{r}
       y<-seq(1,50,by=5)           #saltos de 5
       y<-seq(50,1,by=-2)          #saltos hacia atrás de 2
       y<-seq(1,50,length=100)     #el vector final tiene 100 elementos
```

Una vez creado un vector podemos seleccionar sus elementos del siguiente modo:
```{r}
       y[7]       #posición 7
       y[-2]      #todos los elementos salvo el de la posición 2
       y[c(1,3)]  #posiciones 1 y 3
       y[-(1:5)]  #todos los elementos salvo los de las posiciones 1,2,3,4,5
```

En los elementos seleccionados podemos introducir nuevos valores:
```{r}
       y[-c(2,3,6,9)]<-7
```

Algunas funciones de R asociadas a vectores:
```{r}
       length(x)  #número de elementos de x
       table(v)   #número de veces que se repite cada elemento
       prod(x)    #producto de los elementos de x
       sum(x)     #suma de los elementos de x
       cumsum(x)  #sumas acumuladas de los elementos de x
```

Algunas herramientas estadísticas:
```{r}
      mean(y)                        #media muestral
      median(y)                      #mediana
      var(y)                         #varianza
      sd(y)                          #desviación típica
      min(y)                         #mínimo
      max(y)                         #máximo
      range(y)                       #mínimo y máximo
      quantile(y,probs=c(0.25,0.75)) #cuantiles
      IQR(y)                         #rango intercuartílico
```

Para ciertas funciones necesitamos instalar y cargar librerías:
```{r}
      library(e1071)
      skewness(y)                    #coeficiente de asimetría
      kurtosis(y)                    #coeficiente de curtosis
```


### 4. Matrices:

Se pueden crear uniendo vectores filas o columnas con las funciones "rbind()" y "cbind()".
```{r}
       c1<-c(7,8,9,10); c2=c(1,2,3,4); z1=rbind(c1,c2); z1
       z2<-cbind(c1,c2); z2
```

O colocando los elementos de un vector con la función "matrix()"
```{r}
       matrix(1,2,3)
       x<-c(1,2,3,4,5,6,7,8,9,10,11,12); mat<-matrix(x,4,3)
       mat
```

Una vez creada una matriz podemos seleccionar sus elementos:
```{r}
       mat[1,3]        #elemento situado en la fila 1 columna 3
       mat[1,]         #vector fila 1
       mat[,2]         #vector columna 2
       mat[,c(1,3)]    #matriz columnas 1 y 3
       mat[c(1,4),]    #matriz filas 1 y 4
       mat[-c(1,4),]   #matriz con todas las filas salvo la 1 y la 4
```


Algunas funciones asociadas a matrices:

```{r}
       nrow(mat)       # número de filas
       ncol(mat)       # número de columnas
       t(mat)          # matriz traspuesta
       x<-z1 %*% z2     # producto de las matrices z1 y z2
       solve(x)        # inversa 
       det(x)          # determinante
```


### 5. Conjuntos de datos (data frames)

Son objetos similares a matrices pero sus columnas son vectores que pueden ser numéricos o no. Para crearlos se utiliza la función "data.frame()":
```{r}
      v1<-seq(2,4,length=51)
      v2<-c(rep("A",17),rep("B",17),rep("C",17))
      datos<-data.frame(v1,v2)
```

Cada columna del data frame creado es un vector. Para seleccionarlo podemos proceder como en las matrices o bien con el nombre del data frame, el símbolo "$" y el nombre de la variable:
```{r}
      table(datos$v2)
      mean(datos$v1)
```

