Los datos

datos <- c(138, 164, 150, 132, 144, 125, 149, 157, 146, 158, 140, 147, 136, 148, 152, 144, 168, 126, 138, 176, 163, 119, 154, 165, 146, 173, 142, 147, 135, 153, 140, 135, 161, 145, 135, 142, 150, 156, 145, 128  )


n <- length(datos)

n
## [1] 40
mean(datos)
## [1] 146.8
sort(datos)
##  [1] 119 125 126 128 132 135 135 135 136 138 138 140 140 142 142 144 144
## [18] 145 145 146 146 147 147 148 149 150 150 152 153 154 156 157 158 161
## [35] 163 164 165 168 173 176

mediana y moda

frecuencia <- table(datos)

frecuencia
## datos
## 119 125 126 128 132 135 136 138 140 142 144 145 146 147 148 149 150 152 
##   1   1   1   1   1   3   1   2   2   2   2   2   2   2   1   1   2   1 
## 153 154 156 157 158 161 163 164 165 168 173 176 
##   1   1   1   1   1   1   1   1   1   1   1   1
mediana <- median(datos)

mediana
## [1] 146
moda <- names(frecuencia[frecuencia == max(frecuencia)])  # Valor máximo de frecuencia previamente generada
moda
## [1] "135"

Haciendo tabla de int[ervalos]

clases <- 10


tabla.intervalos <- transform(table(cut(datos, breaks = clases)))

tabla.intervalos # es un data.frame
##         Var1 Freq
## 1  (119,125]    1
## 2  (125,130]    3
## 3  (130,136]    5
## 4  (136,142]    4
## 5  (142,148]   10
## 6  (148,153]    6
## 7  (153,159]    4
## 8  (159,165]    3
## 9  (165,170]    2
## 10 (170,176]    2
# Podemos agregar columnas al Data.Frame. Frecuencia Relativa y Frecuencia Porcentual
tabla.intervalos <- data.frame(tabla.intervalos, 'Freq.Rel' = tabla.intervalos$Freq / n) 

tabla.intervalos <- data.frame(tabla.intervalos, 'Freq.Porc' = tabla.intervalos$Freq.Rel * 100) 


tabla.intervalos
##         Var1 Freq Freq.Rel Freq.Porc
## 1  (119,125]    1    0.025       2.5
## 2  (125,130]    3    0.075       7.5
## 3  (130,136]    5    0.125      12.5
## 4  (136,142]    4    0.100      10.0
## 5  (142,148]   10    0.250      25.0
## 6  (148,153]    6    0.150      15.0
## 7  (153,159]    4    0.100      10.0
## 8  (159,165]    3    0.075       7.5
## 9  (165,170]    2    0.050       5.0
## 10 (170,176]    2    0.050       5.0

Con la fórmula de Sturges

clases <- nclass.Sturges(datos) 
clases
## [1] 7
tabla.intervalos <- transform(table(cut(datos, breaks = clases)))

tabla.intervalos # es un data.frame
##        Var1 Freq
## 1 (119,127]    3
## 2 (127,135]    5
## 3 (135,143]    7
## 4 (143,152]   12
## 5 (152,160]    6
## 6 (160,168]    4
## 7 (168,176]    3
# Podemos agregar columnas al Data.Frame. Frecuencia Relativa y Frecuencia Porcentual
tabla.intervalos <- data.frame(tabla.intervalos, 'Freq.Rel' = tabla.intervalos$Freq / n) 

tabla.intervalos <- data.frame(tabla.intervalos, 'Freq.Porc' = tabla.intervalos$Freq.Rel * 100) 


tabla.intervalos
##        Var1 Freq Freq.Rel Freq.Porc
## 1 (119,127]    3    0.075       7.5
## 2 (127,135]    5    0.125      12.5
## 3 (135,143]    7    0.175      17.5
## 4 (143,152]   12    0.300      30.0
## 5 (152,160]    6    0.150      15.0
## 6 (160,168]    4    0.100      10.0
## 7 (168,176]    3    0.075       7.5