Carlos Jimémez-Gallardo , 2023
Estadístico
MSc Informática Educativa
Universidad de La Frontera
mailto:carlos.jimenez@ufrontera.cl
Data Scientist
www.innovate.cl
cjimenez@innovate.cl
es evidente que R es una herramienta que, a los que realizamos Análisis de Datos, no ha dado bastante libertad. Al respecto es bueno tener ciertas consideraciones respecto de la creacion y presentación en tablas.
un propósito, si tiene claro que quiere decir con el gráfico es más fácil escogerlo.
cúal(es) es (son) el tipo de variable que resumirá
a veces es necesario crear nuevas variables en el dataset
Las librerías son esenciales para facilitarse la vida. Algunas de ellas
library(tidyverse) # carga un conjunto de librerias necesarias, entre ellas dplyr, ggplot2
library(report) # genera informe de resultados estadisticos
library(expss) # tablas etiquetas y otras funciones
library(kableExtra) # construccion de tablas avanzadas.
library(rempsyc) #tablas con formato
library(flextable)
library(broom)
library(xtable)
library(tableone)
pueden encontrar el archivo de datos en el siguiente link:
datos_empleados.xlsx
https://github.com/cjimenezgallardo/DATASETS
Los datos corresponden Sueldo percibidos en una empresa, y que como variable, se tienen:
dataej<-datos_empleados
names(dataej)
## [1] "ID" "Sexo" "FechaNAc" "educacion"
## [5] "labor" "Sueldo_actual" "Sueldo_inicial" "antigüedad"
## [9] "experiencia" "minoria"
CONSEJO: realice un bosquejo manual, que le permita entender que quiere mostrar, para que luego lo contrarreste con lo que apareció en R
Objetivo, Conocer la distribución de personal por labor.
tabla0 <- dataej %>%
group_by(labor) %>%
summarise(Total=n())
print(tabla0)
## # A tibble: 3 × 2
## labor Total
## <dbl> <int>
## 1 1 363
## 2 2 27
## 3 3 84
tabla1 <- dataej %>%
group_by(labor) %>%
summarise(Total=n()) %>%
mutate(Porcentaje=Total/sum(Total)*100)
print(tabla1)
## # A tibble: 3 × 3
## labor Total Porcentaje
## <dbl> <int> <dbl>
## 1 1 363 76.6
## 2 2 27 5.70
## 3 3 84 17.7
# obtencion de frecuencias
tabla1 <- table(dataej$labor)
tabla1_p <- prop.table(tabla1)
tabla1
##
## 1 2 3
## 363 27 84
tabla1_p
##
## 1 2 3
## 0.76582278 0.05696203 0.17721519
#transformar datos a conjunto de datos
tabla1<-as.data.frame(tabla1)
tabla1_p<-as.data.frame(tabla1_p)
tabla1
## Var1 Freq
## 1 1 363
## 2 2 27
## 3 3 84
tabla1_p
## Var1 Freq
## 1 1 0.76582278
## 2 2 0.05696203
## 3 3 0.17721519
# unir datos
tabla_f1<- data.frame(tabla1,tabla1_p)
tabla_f1<- dplyr::select(tabla_f1,-Var1.1)
#cambiar nombre a columnas "variables"
colnames(tabla_f1)<- c("Var","Frec","Porcentaje")
print (tabla_f1)
## Var Frec Porcentaje
## 1 1 363 0.76582278
## 2 2 27 0.05696203
## 3 3 84 0.17721519
#corrigiendo valores a dle porcentaje
tabla_f1$Porcentaje<- round(tabla_f1$Porcentaje*100,2)
tabla_f1
## Var Frec Porcentaje
## 1 1 363 76.58
## 2 2 27 5.70
## 3 3 84 17.72
tabla1_p <- prop.table(tabla0)
tabla1_p
## labor Total
## 1 0.002083333 0.75625
## 2 0.004166667 0.05625
## 3 0.006250000 0.17500
para su creación se deben considerar al menos 2 variables discretas (a lo más)
usando XTABS
tabla_c1<- xtabs(~labor+Sexo,data=dataej)
tabla_c1
## Sexo
## labor h m
## 1 157 206
## 2 27 0
## 3 74 10
tabla_c11<- xtabs(~labor+Sexo,data=dataej) %>% prop.table()*100
tabla_c11
## Sexo
## labor h m
## 1 33.122363 43.459916
## 2 5.696203 0.000000
## 3 15.611814 2.109705
tabla_c2<- xtabs(~labor+educacion+Sexo,data=dataej)
tabla_c2
## , , Sexo = h
##
## educacion
## labor 8 12 14 15 16 17 18 19 20 21
## 1 10 48 6 78 10 2 2 1 0 0
## 2 13 13 0 1 0 0 0 0 0 0
## 3 0 1 0 4 25 8 7 26 2 1
##
## , , Sexo = m
##
## educacion
## labor 8 12 14 15 16 17 18 19 20 21
## 1 30 128 0 33 14 1 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0 0
## 3 0 0 0 0 10 0 0 0 0 0
tabla_c2<- xtabs(~labor+educacion+Sexo,data=dataej) %>% prop.table()*100
tabla_c2<-round(tabla_c2,2) #redondea a 2 decimales
print(tabla_c2)
tabla_r1<-round(addmargins(cbind(tabla_c1),c(1,2)),2)
#tabla_r1<-round(addmargins(tabla_r1,c(1,2)),2)
tabla_r1
## h m Sum
## 1 157 206 363
## 2 27 0 27
## 3 74 10 84
## Sum 258 216 474
tabla_r1<-round(addmargins(prop.table(cbind(tabla_c1)),c(1,2))*100,2)
tabla_r1
## h m Sum
## 1 33.12 43.46 76.58
## 2 5.70 0.00 5.70
## 3 15.61 2.11 17.72
## Sum 54.43 45.57 100.00
tabla_r1<-round(addmargins(prop.table(cbind(tabla_c1), margin = 1),c(2))*100,2)
tabla_r1
## h m Sum
## 1 43.25 56.75 100
## 2 100.00 0.00 100
## 3 88.10 11.90 100
tabla_r1<-round(addmargins(prop.table(cbind(tabla_c1),margin = 2),c(1))*100,2)
tabla_r1
## h m
## 1 60.85 95.37
## 2 10.47 0.00
## 3 28.68 4.63
## Sum 100.00 100.00
vd<- datos_empleados$Sueldo_actual
###---recopilacion de datos
n.datos<-length(vd)
min.datos<-min(vd)
max.datos<-max(vd)
rango.datos<-max.datos-min.datos
n_int.datos<-trunc(3.322*log10(n.datos)+1,0)
incremento<-round(rango.datos/n_int.datos,4)
delta=0.0001
### Paramtetros de la tabla
li.t<-1:n_int.datos
ls.t<-1:n_int.datos
marca.t<-1:n_int.datos
f.t<-1:n_int.datos
Fa.t<-1:n_int.datos
h.t<-1:n_int.datos
Ha.t<-1:n_int.datos
#### Inicializacion
for (j in 1:n_int.datos){
f.t[j]=0
}
#### proceso llenado tabla
li.t[1]<-min.datos
ls.t[1]<-min.datos+incremento
marca.t[1]<- round((li.t[1]+ls.t[1])/2,2)
for (i in 2:n_int.datos){
li.t[i]<-ls.t[i-1]+delta
ls.t[i]<-li.t[i]+incremento
marca.t[i]<- (li.t[i]+ls.t[i])/2
}
tabla_final<- data.frame(matrix(nrow = n_int.datos, ncol = 7))
names(tabla_final) <- c("LI","LS","Clase","f","FA","h", "HA")
for (i in 1: n.datos){
for (j in 1:n_int.datos){
if (vd[i]>= li.t[j] & vd[i]<=ls.t[j]) {
f.t[j]<-f.t[j]+1
j<-n_int.datos
}
}
}
Fa.t[1]<-f.t[1]
h.t[1]<-round(f.t[1]/n.datos*100,2)
Ha.t[1]<-h.t[1]
tabla_final[1,]<-c(li.t[1],ls.t[1],marca.t[1],f.t[1],Fa.t[1],h.t[1],Ha.t[1])
for (j in 2:n_int.datos){
Fa.t[j]<-Fa.t[j-1]+f.t[j]
h.t[j]<-round(f.t[j]/n.datos*100,2)
Ha.t[j]<-Ha.t[j-1]+h.t[j]
tabla_final[j,]<-c(li.t[j],ls.t[j],marca.t[j],f.t[j],Fa.t[j],h.t[j],Ha.t[j])
}
print(tabla_final)
## LI LS Clase f FA h HA
## 1 15750 29000 22375 238 238 50.21 50.21
## 2 29000 42250 35625 144 382 30.38 80.59
## 3 42250 55500 48875 36 418 7.59 88.18
## 4 55500 68750 62125 30 448 6.33 94.51
## 5 68750 82000 75375 14 462 2.95 97.46
## 6 82000 95250 88625 6 468 1.27 98.73
## 7 95250 108500 101875 4 472 0.84 99.57
## 8 108500 121750 115125 1 473 0.21 99.78
## 9 121750 135000 128375 1 474 0.21 99.99