##Ejercicio 1
#Práctica 2. Manipulación de datos en R
#1. La tabla de datos pulse.txt que encontrarás en http://aprender.uib.es/Rdir/pulse.txt recoge una serie de informaciones de tipo general (altura, peso, sexo, si corren, si fuman y su nivel de actividad física: 1 si es bajo, 2 si es moderado y 3 si es alto) sobre algunos estudiantes matriculados en un curso de estadística de la Universidad Estatal de Pensilvania hace unos años. A estos estudiantes se les pidió que lanzasen una moneda al aire: a los que sacaron cara, se les hizo correr un minuto sin moverse del sitio, y los que sacaron cruz, descansaron un minuto.
#Todos los estudiantes (tanto los que corrieron como los que no) midieron sus pulsaciones por minuto antes y después de este minuto de ejercicio o descanso, y estas medidas también aparecen en esta tabla (en las variables PuBefor y PuAfter, respectivamente).
TA2 <- read.table(file = "C:/Users/Victor Perera/Downloads/tarea2.txt", header = TRUE)
TA2
#a) ¿Cuántos estudiantes tomaron parte en este estudio? ¿Cuántos son hombres y cuántas mujeres?
sum(TA2$Sex == "male")
## [1] 57
sum(TA2$Sex == "female")
## [1] 35
#b) Calcular el porcentaje medio de variación en el número de pulsaciones tras el minuto de ejercicio o descanso de los estudiantes que corrieron (se indica con el valor yes en la variable Ran.) y de los que no. ¿Hay mucha diferencia?
PMV<- (subset(TA2, select = c(PuBefor,PuAfter,Ran.)))
PMV
PMV2<- cbind(round(((PMV$PuAfter-PMV$PuBefor)/PMV$PuBefor*100),2),PMV)
PMV2
colnames(PMV2)<-c("DeltaPU","PuBefor","PuAfter","Ran.")
PMV2
DT2<- (subset(PMV2,Ran.=="yes"& DeltaPU))
DT2
mean(DT2$DeltaPU)
## [1] 26.98559
DT1<- (subset(PMV2,Ran.=="no"& DeltaPU))
DT1
mean(DT1$DeltaPU)
## [1] 0.2904878
#C)Calcular el porcentaje medio de incremento en el número de pulsaciones tras el minuto de ejercicio sólo para los estudiantes que corrieron, pero ahora distinguiendo los hombres de las mujeres. ¿Cuál de los dos incrementos medios es mayor?
PMV3<- (subset(TA2, select = c(PuBefor,PuAfter,Sex,Ran.)))
PMV3
DT3<- (subset(PMV3,Ran.=="yes"& Sex=="male"))
DT3
PMC<- cbind(round(((DT3$PuAfter-DT3$PuBefor)/DT3$PuBefor*100),2),DT3)
PMC
colnames(PMC)<-c("DeltaPU","PuBefor","PuAfter","Sex","Ran.")
PMC
mean(PMC$DeltaPU)
## [1] 19.17625
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.1.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
DT4 <- PMV3 %>%
filter(Ran.=="yes",Sex=="female")
DT4
PMC1<- cbind(round(((DT4$PuAfter-DT4$PuBefor)/DT4$PuBefor*100),2),DT4)
PMC1
colnames(PMC1)<-c("DeltaPU","PuBefor","PuAfter","Sex","Ran.")
PMC1
mean(PMC1$DeltaPU)
## [1] 41.57091
#d) Calcular el porcentaje medio de incremento en el número de pulsaciones tras el minuto de ejercicio para los estudiantes que corrieron, pero ahora distinguiendo los estudiantes que fuman de los que no. ¿Cuál de los dos incrementos medios es mayor?
PMF<- (subset(TA2, select = c(PuBefor,PuAfter,Ran.,Smokes.)))
PMF
PMF1<- cbind(round(((PMF$PuAfter-PMF$PuBefor)/PMF$PuBefor*100),2),PMF)
PMF1
colnames(PMF1)<-c("DeltaPU","PuBefor","PuAfter","Ran.", "Smokes.")
PMF1
DF1<- (subset(PMF1,Smokes.=="no"& Ran.=="yes"))
DF1
mean(DF1$DeltaPU)
## [1] 29.41174
DF2<- (subset(PMF1,Smokes.=="yes"& Ran.=="yes"))
DF2
mean(DF2$DeltaPU)
## [1] 20.08667
#e) Calcular el número medio de pulsaciones antes del minuto de ejercicio o descanso de todos los estudiantes, separados según su nivel de actividad física. ¿Se observa alguna diferencia significativa?
PMA<- (subset(TA2, select = c(PuBefor,PuAfter,ActivityL)))
PMA
PMA1<- cbind(round(((PMA$PuAfter-PMA$PuBefor)/PMA$PuBefor*100),2),PMA)
PMA1
colnames(PMA1)<-c("DeltaPU","PuBefor","PuAfter","ActivityL")
PMA1
DA1<- (subset(PMA1,ActivityL=="0"))
promedios_agg <- aggregate(DeltaPU ~ ActivityL, data = PMA1, FUN = mean)
print("\nPromedios calculados con aggregate():")
## [1] "\nPromedios calculados con aggregate():"
print(promedios_agg)
## ActivityL DeltaPU
## 1 0 12.500000
## 2 1 3.745556
## 3 2 14.014918
## 4 3 1.347619
#2. Realizar un análisis descriptivo de la base datos2mod.txt
D2M <- read.table(file = "C:/Users/Victor Perera/Downloads/datos2mod.txt", header = TRUE)
D2M
summary(D2M)
## X974 X1 X1.1 X1.2
## Min. :146.0 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:146.0 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000
## Median :316.0 Median :1.000 Median :1.000 Median :1.000
## Mean :476.5 Mean :1.353 Mean :1.392 Mean :1.226
## 3rd Qu.:974.0 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:1.000
## Max. :974.0 Max. :2.000 Max. :2.000 Max. :2.000
## X1.3 X1.4 X1.5 X1.6
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000
## Median :1.000 Median :1.000 Median :1.000 Median :1.000
## Mean :1.317 Mean :1.246 Mean :1.151 Mean :1.244
## 3rd Qu.:2.000 3rd Qu.:1.000 3rd Qu.:1.000 3rd Qu.:1.000
## Max. :2.000 Max. :2.000 Max. :2.000 Max. :2.000
## X2 X1.7 X2.1 X1.8 X1.9
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000 Min. :1
## 1st Qu.:2.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1
## Median :2.000 Median :1.000 Median :1.000 Median :1.000 Median :1
## Mean :1.769 Mean :1.078 Mean :1.441 Mean :1.182 Mean :1
## 3rd Qu.:2.000 3rd Qu.:1.000 3rd Qu.:2.000 3rd Qu.:1.000 3rd Qu.:1
## Max. :2.000 Max. :2.000 Max. :2.000 Max. :2.000 Max. :1
D2M
length(unique(D2M$X974))
## [1] 3
D2M1<-D2M[1:149,]
D2M1
summary(D2M1[,c(2:12)])
## X1 X1.1 X1.2 X1.3
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000
## Median :1.000 Median :1.000 Median :1.000 Median :1.000
## Mean :1.376 Mean :1.477 Mean :1.181 Mean :1.329
## 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:1.000 3rd Qu.:2.000
## Max. :2.000 Max. :2.000 Max. :2.000 Max. :2.000
## X1.4 X1.5 X1.6 X2
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:2.000
## Median :1.000 Median :1.000 Median :1.000 Median :2.000
## Mean :1.329 Mean :1.174 Mean :1.248 Mean :1.805
## 3rd Qu.:2.000 3rd Qu.:1.000 3rd Qu.:1.000 3rd Qu.:2.000
## Max. :2.000 Max. :2.000 Max. :2.000 Max. :2.000
## X1.7 X2.1 X1.8
## Min. :1.000 Min. :1.00 Min. :1.000
## 1st Qu.:1.000 1st Qu.:1.00 1st Qu.:1.000
## Median :1.000 Median :1.00 Median :1.000
## Mean :1.081 Mean :1.43 Mean :1.248
## 3rd Qu.:1.000 3rd Qu.:2.00 3rd Qu.:1.000
## Max. :2.000 Max. :2.00 Max. :2.000
hist(rowSums(D2M1[,c("X1","X1.1", "X1.2", "X1.3", "X1.4", "X1.5", "X1.6", "X2", "X1.7","X2.1", "X1.8","X1.9")])
, main = "479",
xlab = "Suma de filas",
xlim = c(10,22),
breaks = 7)
RW1<-rowMeans(D2M1[,c("X1","X1.1", "X1.2", "X1.3", "X1.4", "X1.5", "X1.6", "X2", "X1.7","X2.1", "X1.8","X1.9")])
summary(RW1)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.167 1.333 1.306 1.417 1.750
D2M2<-D2M[150:299,]
D2M2
hist(rowSums(D2M2[,c("X1","X1.1", "X1.2", "X1.3", "X1.4", "X1.5", "X1.6", "X2", "X1.7","X2.1", "X1.8","X1.9")])
, main = "146",
xlab = "Suma de filas",
xlim = c(10,22),
breaks = 7)
RW1<-rowMeans(D2M2[,c("X1","X1.1", "X1.2", "X1.3", "X1.4", "X1.5", "X1.6", "X2", "X1.7","X2.1", "X1.8","X1.9")])
summary(RW1)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.167 1.250 1.281 1.333 1.750
D2M3<-D2M[301:451,]
D2M3
hist(rowSums(D2M3[,c("X1","X1.1", "X1.2", "X1.3", "X1.4", "X1.5", "X1.6", "X2", "X1.7","X2.1", "X1.8","X1.9")])
, main = "316",
xlab = "Suma de filas",
xlim = c(10,22),
breaks = 7)
RW1<-rowMeans(D2M2[,c("X1","X1.1", "X1.2", "X1.3", "X1.4", "X1.5", "X1.6", "X2", "X1.7","X2.1", "X1.8","X1.9")])
summary(RW1)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.167 1.250 1.281 1.333 1.750
#3. Realizar un análisis descriptivo de la base datos1.txt y presentar una data.frame resumen.
D1M <- read.table(file = "C:/Users/Victor Perera/Downloads/datos1.txt", header = TRUE)
D1M
f <- data.frame(unclass(summary(D1M)), check.names = FALSE, stringsAsFactors = FALSE)
f
#4. De acuerdo con la base de datos bfeed responda las siguientes preguntas:
#a) ¿Cuál es la edad promedio de las mamás de raza blanca al momento en que nacen los niños? ¿Cuál es el promedio de las mamás de raza negra?
library(KMsurv)
data(bfeed)
datos=bfeed
View(datos)
library(dplyr)
BM <-datos %>% filter(race==2)
mean(BM$agemth)
## [1] 20.96581
WM<-datos %>% filter(race==1)
mean(WM$agemth)
## [1] 21.75378
OM<-datos %>% filter(race==3)
mean(OM$agemth)
## [1] 21.03378
#b) ¿Qué porcentaje de mamás, que tuvieron a su hijo antes de los 20, viven en pobreza?
M20<-datos %>% filter(agemth<20)
M20
(sum(M20$poverty==1)*100)/222
## [1] 35.13514
#c) ¿Cuántas madres solían tomar alcohol en el año del nacimiento del niño?
DA<-datos %>% filter(alcohol==1)
DA
sum(DA$alcohol)
## [1] 79
#d) ¿Cuántas mujeres no tomaban ni fumaban en el año del nacimiento del niño? ¿Qué porcentaje representa?
DAF2<-datos %>% filter(alcohol==0 & smoke==0)
(nrow(DAF2)*100)/927
## [1] 66.66667
BFR<-datos %>% filter(race==1)
BFR2<-datos %>% filter(race==2)
BFR3<-datos %>% filter(race==3)
#e) ¿Qué raza tiende a amamantar en promedio más tiempo al bebé?
max(datos$duration)
## [1] 192
hist(datos$duration)
plot(datos$duration,datos$race)
summary(datos$duration)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 4.00 10.00 16.18 24.00 192.00
lista<-list(BFR,BFR2,BFR3)
promedios_valor <- numeric(length(lista))
promedios_valor
## [1] 0 0 0
for (i in seq_along(lista)) {
promedios_valor[i] <- mean(lista[[i]]$duration, na.rm = TRUE)
}
print("Promedios de la columna 'valor':")
## [1] "Promedios de la columna 'valor':"
print(promedios_valor)
## [1] 17.03625 15.18803 13.11486
DPB<-data.frame(c("Poblacion Blanca","Poblacion Negra","Poblacion Mixta"),promedios_valor)
DPB
colnames(DPB)<-c("Poblacion","Duracion de Amamantamiento (semanas)")
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.