Visit my repositories: “https://github.com/geraldmoreno993

Primeros pasos (ejecutar en la ventana de script)

3+4
## [1] 7
7*4
## [1] 28
5-1
## [1] 4
sqrt(25)
## [1] 5
sqrt(27)
## [1] 5.196152
sqrt(-3)
## Warning in sqrt(-3): Se han producido NaNs
## [1] NaN
27**(1/3)
## [1] 3
4^2
## [1] 16
class(4.4)
## [1] "numeric"
class(4.0004)
## [1] "numeric"
class(TRUE)
## [1] "logical"
class("hola papa")
## [1] "character"

Ejercicio 1

help(log)
log(50, base= 3) + (30*(3 - 5.4)) 
## [1] -68.43912

Ejercicio 2

(log(20.3, base= 2)/(80^1/4)) + ((43-5)/sqrt(34))
## [1] 6.734117

Segunda Clase

Palabra en cursiva hola

Vectores

Tamanio de un vector

mi.vector <- c(1,2,3,4,3,2,2)

length(mi.vector)
## [1] 7
vector = c(1,2,3,4,5,4,3,2,1.1)
class(vector)
## [1] "numeric"
v1 <- c(3.1,4.5,7.8)
class(v1)
## [1] "numeric"

Matrices

a <-  c(1,2,3,4)

b <-  c(2,3,4,4)

m1 <- cbind(a,b)
m2 <- rbind(a,b)

class(m1)
## [1] "matrix" "array"
class(m2)
## [1] "matrix" "array"
M <- matrix(1:9, nrow = 3, ncol = 3, byrow = T)
M
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
class(M)
## [1] "matrix" "array"
length(M)
## [1] 9

Extrayendo columnas y filas de una matriz

M
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
#Primeras 3 filas
M[, 1]
## [1] 1 4 7
M[, 2]
## [1] 2 5 8
M[, 3]
## [1] 3 6 9
#Segunda columna
M[2, ] #Automaticamente la 3era fila paso a ser la 2da
## [1] 4 5 6
#Extrayendo filas 1 y 3

M[c(1,3),]
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    7    8    9
#Corre esto y dime lo que sucede
M[c(1, 3), c(2, 3)]
##      [,1] [,2]
## [1,]    2    3
## [2,]    8    9

Data frames

i <- iris

d <- i[1]
class(d)
## [1] "data.frame"
df <- i["Sepal.Length"]
class(df)
## [1] "data.frame"
x <- i[,"Sepal.Length"]
class(x)
## [1] "numeric"
v1 <- i$Sepal.Length
class(v1)
## [1] "numeric"
i[c(1, 3), c(2, 3)]
##   Sepal.Width Petal.Length
## 1         3.5          1.4
## 3         3.2          1.3

Usando la función subset

# Dataframe de ejemplo
datos <- data.frame(
  Nombre = c("Juan", "María", "Pedro", "Ana"),
  Edad = c(23, 25, 22, 21)
)

datos
##   Nombre Edad
## 1   Juan   23
## 2  María   25
## 3  Pedro   22
## 4    Ana   21
subset(datos, Edad > 23)
##   Nombre Edad
## 2  María   25
subset(datos, Edad < 23)
##   Nombre Edad
## 3  Pedro   22
## 4    Ana   21
subset(datos, Edad > 23 & Nombre == "María")
##   Nombre Edad
## 2  María   25
subset(datos, Nombre == "María" |  Nombre == "Pedro")
##   Nombre Edad
## 2  María   25
## 3  Pedro   22
#Posiciones
dim(iris)
## [1] 150   5
which(iris[,5] == "setosa")
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

Demostracion de prueba T usando subset previamente

i
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica
t <- subset(i, Species == "setosa" | Species == "virginica")

t.test( Sepal.Length ~ Species,data = t)
## 
##  Welch Two Sample t-test
## 
## data:  Sepal.Length by Species
## t = -15.386, df = 76.516, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group setosa and group virginica is not equal to 0
## 95 percent confidence interval:
##  -1.78676 -1.37724
## sample estimates:
##    mean in group setosa mean in group virginica 
##                   5.006                   6.588

Estadística descriptiva

mínimo min() máximo max() rango range() media mean() desviación estándar sd() mediana median() varianza var() rango intercuartílico IQR()

summary(i$Sepal.Length)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.300   5.100   5.800   5.843   6.400   7.900
summary(i)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
str(i)
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
#Usar un paquete
library("psych") #install.packages(psych)
describe(i)
##              vars   n mean   sd median trimmed  mad min max range  skew
## Sepal.Length    1 150 5.84 0.83   5.80    5.81 1.04 4.3 7.9   3.6  0.31
## Sepal.Width     2 150 3.06 0.44   3.00    3.04 0.44 2.0 4.4   2.4  0.31
## Petal.Length    3 150 3.76 1.77   4.35    3.76 1.85 1.0 6.9   5.9 -0.27
## Petal.Width     4 150 1.20 0.76   1.30    1.18 1.04 0.1 2.5   2.4 -0.10
## Species*        5 150 2.00 0.82   2.00    2.00 1.48 1.0 3.0   2.0  0.00
##              kurtosis   se
## Sepal.Length    -0.61 0.07
## Sepal.Width      0.14 0.04
## Petal.Length    -1.42 0.14
## Petal.Width     -1.36 0.06
## Species*        -1.52 0.07

Importar archivos .csv

setwd("/home/gerald/Documentos/maestria/2do_ciclo/graficos_R/repaso")
getwd()
## [1] "/home/gerald/Documentos/maestria/2do_ciclo/graficos_R/repaso"
p <- read.csv("penguins.csv")


str(p)
## 'data.frame':    344 obs. of  8 variables:
##  $ species          : chr  "Adelie" "Adelie" "Adelie" "Adelie" ...
##  $ island           : chr  "Torgersen" "Torgersen" "Torgersen" "Torgersen" ...
##  $ bill_length_mm   : num  39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
##  $ bill_depth_mm    : num  18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
##  $ flipper_length_mm: int  181 186 195 NA 193 190 181 195 193 190 ...
##  $ body_mass_g      : int  3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
##  $ sex              : chr  "male" "female" "female" NA ...
##  $ year             : int  2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...

Convetir columnas de un vector a factor y ordenar levels

colores <- c("black","pink","pink","pink","black","black")

colores <- as.factor(colores)
class(colores)
## [1] "factor"
levels(colores)
## [1] "black" "pink"
# Reordenar los niveles a "pink" "black"
colores <- factor(colores, levels = c("pink", "black"))

# Ver los nuevos niveles
levels(colores)
## [1] "pink"  "black"
tab <- table(colores)

100*prop.table(tab)
## colores
##  pink black 
##    50    50

Convetir columnas de un dataframe a factor

colnames(p)
## [1] "species"           "island"            "bill_length_mm"   
## [4] "bill_depth_mm"     "flipper_length_mm" "body_mass_g"      
## [7] "sex"               "year"
p$species <- factor(p$species)
str(p)
## 'data.frame':    344 obs. of  8 variables:
##  $ species          : Factor w/ 3 levels "Adelie","Chinstrap",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ island           : chr  "Torgersen" "Torgersen" "Torgersen" "Torgersen" ...
##  $ bill_length_mm   : num  39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
##  $ bill_depth_mm    : num  18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
##  $ flipper_length_mm: int  181 186 195 NA 193 190 181 195 193 190 ...
##  $ body_mass_g      : int  3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
##  $ sex              : chr  "male" "female" "female" NA ...
##  $ year             : int  2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...
#Bucle para convertir cada uno de las columnas character en #factor

for(col in names(p)) {
  if(is.character(p[[col]])) {
    p[[col]] <- factor(p[[col]])
  }
}
str(p)
## 'data.frame':    344 obs. of  8 variables:
##  $ species          : Factor w/ 3 levels "Adelie","Chinstrap",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ island           : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ bill_length_mm   : num  39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
##  $ bill_depth_mm    : num  18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
##  $ flipper_length_mm: int  181 186 195 NA 193 190 181 195 193 190 ...
##  $ body_mass_g      : int  3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
##  $ sex              : Factor w/ 2 levels "female","male": 2 1 1 NA 1 2 1 2 NA NA ...
##  $ year             : int  2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...

Missing data (NA)

#Agregando el argumento na.rm = TRUE
sum(p$flipper_length_mm, na.rm = TRUE)
## [1] 68713
mean(p$flipper_length_mm, na.rm = TRUE)
## [1] 200.9152
##Eliminando todas las filas que tengan NA
p_clean <- na.omit(p)

mean(p_clean$flipper_length_mm) 
## [1] 200.967
#Compara este resultado con el mean(p$flipper_length_mm, na.rm = #TRUE) y explica por que son diferentes

p$flipper_length_mm
##   [1] 181 186 195  NA 193 190 181 195 193 190 186 180 182 191 198 185 195 197
##  [19] 184 194 174 180 189 185 180 187 183 187 172 180 178 178 188 184 195 196
##  [37] 190 180 181 184 182 195 186 196 185 190 182 179 190 191 186 188 190 200
##  [55] 187 191 186 193 181 194 185 195 185 192 184 192 195 188 190 198 190 190
##  [73] 196 197 190 195 191 184 187 195 189 196 187 193 191 194 190 189 189 190
##  [91] 202 205 185 186 187 208 190 196 178 192 192 203 183 190 193 184 199 190
## [109] 181 197 198 191 193 197 191 196 188 199 189 189 187 198 176 202 186 199
## [127] 191 195 191 210 190 197 193 199 187 190 191 200 185 193 193 187 188 190
## [145] 192 185 190 184 195 193 187 201 211 230 210 218 215 210 211 219 209 215
## [163] 214 216 214 213 210 217 210 221 209 222 218 215 213 215 215 215 216 215
## [181] 210 220 222 209 207 230 220 220 213 219 208 208 208 225 210 216 222 217
## [199] 210 225 213 215 210 220 210 225 217 220 208 220 208 224 208 221 214 231
## [217] 219 230 214 229 220 223 216 221 221 217 216 230 209 220 215 223 212 221
## [235] 212 224 212 228 218 218 212 230 218 228 212 224 214 226 216 222 203 225
## [253] 219 228 215 228 216 215 210 219 208 209 216 229 213 230 217 230 217 222
## [271] 214  NA 215 222 212 213 192 196 193 188 197 198 178 197 195 198 193 194
## [289] 185 201 190 201 197 181 190 195 181 191 187 193 195 197 200 200 191 205
## [307] 187 201 187 203 195 199 195 210 192 205 210 187 196 196 196 201 190 212
## [325] 187 198 199 201 193 203 187 197 191 203 202 194 206 189 195 207 202 193
## [343] 210 198
p_clean$flipper_length_mm
##   [1] 181 186 195 193 190 181 195 182 191 198 185 195 197 184 194 174 180 189
##  [19] 185 180 187 183 187 172 180 178 178 188 184 195 196 190 180 181 184 182
##  [37] 195 186 196 185 190 182 190 191 186 188 190 200 187 191 186 193 181 194
##  [55] 185 195 185 192 184 192 195 188 190 198 190 190 196 197 190 195 191 184
##  [73] 187 195 189 196 187 193 191 194 190 189 189 190 202 205 185 186 187 208
##  [91] 190 196 178 192 192 203 183 190 193 184 199 190 181 197 198 191 193 197
## [109] 191 196 188 199 189 189 187 198 176 202 186 199 191 195 191 210 190 197
## [127] 193 199 187 190 191 200 185 193 193 187 188 190 192 185 190 184 195 193
## [145] 187 201 211 230 210 218 215 210 211 219 209 215 214 216 214 213 210 217
## [163] 210 221 209 222 218 215 213 215 215 215 215 210 220 222 209 207 230 220
## [181] 220 213 219 208 208 208 225 210 216 222 217 210 225 213 215 210 220 210
## [199] 225 217 220 208 220 208 224 208 221 214 231 219 230 229 220 223 216 221
## [217] 221 217 216 230 209 220 215 223 212 221 212 224 212 228 218 218 212 230
## [235] 218 228 212 224 214 226 216 222 203 225 219 228 215 228 215 210 219 208
## [253] 209 216 229 213 230 217 230 222 214 215 222 212 213 192 196 193 188 197
## [271] 198 178 197 195 198 193 194 185 201 190 201 197 181 190 195 181 191 187
## [289] 193 195 197 200 200 191 205 187 201 187 203 195 199 195 210 192 205 210
## [307] 187 196 196 196 201 190 212 187 198 199 201 193 203 187 197 191 203 202
## [325] 194 206 189 195 207 202 193 210 198

familia de comandos de apply

Las funciones apply(), lapply(), sapply(), tapply(), vapply(), mapply(), y rapply() son parte de la familia de funciones “apply” en R. Estas son extremadamente útiles para evitar bucles explícitos y realizar operaciones más eficientemente. Vamos a explorar cada una de ellas utilizando el conjunto de datos iris.

Estructura: X: Matriz o dataframe. MARGIN: 1 para filas, 2 para columnas. FUN: La función que deseas aplicar.

#apply()
#apply(X, MARGIN, FUN)
apply(iris[, 1:4], 2, mean)
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
##     5.843333     3.057333     3.758000     1.199333
#lapply() #Te da una lista
#lapply(X, FUN)
lapply(iris[, 1:4], range)
## $Sepal.Length
## [1] 4.3 7.9
## 
## $Sepal.Width
## [1] 2.0 4.4
## 
## $Petal.Length
## [1] 1.0 6.9
## 
## $Petal.Width
## [1] 0.1 2.5
#sapply() # Te da un vector o matriz 
#sapply(X, FUN)
sapply(iris[, 1:4], range)
##      Sepal.Length Sepal.Width Petal.Length Petal.Width
## [1,]          4.3         2.0          1.0         0.1
## [2,]          7.9         4.4          6.9         2.5
#tapply() #aplica una función a subgrupos definidos por una #variable categórica
#tapply(X, INDEX, FUN)
tapply(iris$Sepal.Length, iris$Species, summary)
## $setosa
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.300   4.800   5.000   5.006   5.200   5.800 
## 
## $versicolor
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.900   5.600   5.900   5.936   6.300   7.000 
## 
## $virginica
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.900   6.225   6.500   6.588   6.900   7.900

Curva de distribución Normal

###Para graficar una curva normal

bd <- p$bill_length_mm
hist(bd)

describe(bd, na.rm = TRUE)
##    vars   n  mean   sd median trimmed  mad  min  max range skew kurtosis  se
## X1    1 342 43.92 5.46  44.45   43.91 7.04 32.1 59.6  27.5 0.05    -0.89 0.3
curve(dnorm(x, mean = 43.92193, sd = 5.46),xlim = c(0,80))

help(dnorm)

Para calcular probabilidad de encontrar ciertos cuantiles en curva Z

#Probab. de encontrar q menores a 0
pnorm(q = 0, mean = 0, sd = 1)
## [1] 0.5
#Probab. de encontrar q menores a 2
pnorm(q = 2, mean = 0, sd = 1)
## [1] 0.9772499
#Probab. de encontrar q mayores a 2
1 - pnorm(q = 2, mean = 0, sd = 1)
## [1] 0.02275013
pnorm(q = 2, mean = 0, sd = 1, lower.tail = FALSE)
## [1] 0.02275013
#Reto: Calcule prob. de tener q entre 5.5 y 6.5

describe(iris[[1]])
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 150 5.84 0.83    5.8    5.81 1.04 4.3 7.9   3.6 0.31    -0.61 0.07
pnorm(q = 6.5, mean = 5.84, sd = 0.83) - pnorm(q = 5.5, mean = 5.84, sd = 0.83)
## [1] 0.4457103

Curva de distribución T

#Con media en 5
curve(dt(x - 5, df = 4), xlim = c(0, 10),ylab = "Densidad de probabilidad", xlab = "cuantiles")
title(main = "Curva T, df = 4")

Para calcular probabilidad de encontrar ciertos cuantiles T

## Calcula la prob. de encontrar cuantiles menores a 2 con df=5
pt(q = -2, df = 5)
## [1] 0.05096974

Curva de distribución Chi-cuadrado

curve(dchisq(x, df = 4), xlim = c(0, 20),ylab = "Densidad de probabilidad", xlab = "cuantiles")
title(main = "Curva chiˆ2, df = 4")

### Para calcular probabilidad de encontrar ciertos cuantiles chi^2

## Calcula la prob. de encontrar cuantiles mayores a 7 con df=4
1 - pchisq(q = 7, df = 4)
## [1] 0.1358882

Gráficos de normalidad con histograma

O3 <- airquality$Ozone 
#Graficar el histograma de ozone
hist(O3, freq = FALSE, xlim = c(-60, 200), main = "")
title("Histograma de Ozone")
#Añadir curva normal con media en la mism posición 
curve(dnorm(x, mean = mean(O3, na.rm = TRUE),
sd = sd(O3, na.rm = TRUE)), add = TRUE)

QQ - plot

qqnorm(O3)
qqline(O3)

y <- rnorm(50, mean = .5, sd = .95)