2.1. ¿Cuál será el resultado de ejecutar las siguientes instrucciones?:
# a)
x = c(1,3,5,7,9)
# b)
y = c(2,4,6,7,11,12)
# c)
x+1
## [1] 2 4 6 8 10
# d)
y*2
## [1] 4 8 12 14 22 24
# e)
length(x)
## [1] 5
length(y)
## [1] 6
# f)
x+y
## Warning in x + y: longitud de objeto mayor no es múltiplo de la longitud de uno
## menor
## [1] 3 7 11 14 20 13
# g)
sum(x>5)
## [1] 2
sum(x[x>5])
## [1] 16
# h)
sum(x>5 | x< 3)
## [1] 3
# i)
y[2]
## [1] 4
# j)
y[-2]
## [1] 2 6 7 11 12
# k)
y[x]
## [1] 2 6 11 NA NA
# l)
print("(NA) significa Not Available (No Disponible) y se utiliza para representar valores faltantes o ausentes en los datos.")
## [1] "(NA) significa Not Available (No Disponible) y se utiliza para representar valores faltantes o ausentes en los datos."
# m)
y[y>=8]
## [1] 11 12
2.2. Un conductor europeo de viaje por Estados Unidos apunta las millas recorridas por su coche cada vez que llena el tanque de gasolina. La relación de las últimas 10 veces que lo ha llenado es la siguiente:
65241 65665 65998 66014 66547 66857 67025 67447 66958 67002
Crea una variable llamada “millas” que contenga los datos anotados.
Crea una nueva variable “kms” y asígnale el valor de “millas” transformado en kms (una milla son 1,609 km).
# a)
millas = c(65241, 65665, 65998, 66014, 66547, 66857, 67025, 67447, 66958, 67002)
# b)
conver = 1.609
km = conver*millas
km
## [1] 104972.8 105655.0 106190.8 106216.5 107074.1 107572.9 107843.2 108522.2
## [9] 107735.4 107806.2
diff(millas)
## [1] 424 333 16 533 310 168 422 -489 44
diff(km)
## [1] 682.216 535.797 25.744 857.597 498.790 270.312 678.998 -786.801
## [9] 70.796
summary(km)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 104973 106197 107324 106959 107789 108522
2.3. Una persona dispone de un contrato de pago mínimo telefónico, con el que cuenta poder controlar sus gastos. A pesar de esto cada mes tiene que pagar cantidades diferentes, que finalmente decide revisar. En el último año estas cantidades, en euros, han sido las siguientes:
47 32 40 36 49 31 49 30 49 35 48 32
telefono = c(47, 32, 40, 36, 49, 31, 49, 30, 49, 35, 48, 32)
mes = c("Jan", "Feb", "March", "April", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dic")
#a) ¿Cuánto le ha costado la factura del último año?
sum(telefono)
## [1] 478
#b) ¿Cuánto ha pagado en promedio cada mes?
mean(telefono)
## [1] 39.83333
#c) ¿Cuáles son las cantidades mínimas y máximas pagadas?
maximo = max(telefono)
minimo = min(telefono)
print(paste("Pago maximo:",maximo))
## [1] "Pago maximo: 49"
print(paste("Pago mimino:",minimo))
## [1] "Pago mimino: 30"
#d) ¿En qué mes se realizó cada pago?
matrizFila = rbind(mes, telefono)
matrizColumna = cbind(mes, telefono)
matrizFila
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## mes "Jan" "Feb" "March" "April" "May" "June" "July" "Aug" "Sep" "Oct"
## telefono "47" "32" "40" "36" "49" "31" "49" "30" "49" "35"
## [,11] [,12]
## mes "Nov" "Dic"
## telefono "48" "32"
matrizColumna
## mes telefono
## [1,] "Jan" "47"
## [2,] "Feb" "32"
## [3,] "March" "40"
## [4,] "April" "36"
## [5,] "May" "49"
## [6,] "June" "31"
## [7,] "July" "49"
## [8,] "Aug" "30"
## [9,] "Sep" "49"
## [10,] "Oct" "35"
## [11,] "Nov" "48"
## [12,] "Dic" "32"
#e) ¿Cuantos meses pagó más de 40 euros?
sum(telefono>40)
## [1] 5
#f) ¿Qué porcentaje del gasto total representa esta cantidad?
sumMeses = sum(telefono[telefono>40])
sumTotal = sum(telefono)
###############################
porTotal = ((sumMeses*100)/sumTotal)
###############################
print(paste("Valor total del pago anual es: ",sumTotal ))
## [1] "Valor total del pago anual es: 478"
print(paste("Valor total del precio mayor a 40 es: ",sumMeses ))
## [1] "Valor total del precio mayor a 40 es: 242"
print(paste("porcentaje de pagos mayores a 40 es: ",round(porTotal, digits = 2)))
## [1] "porcentaje de pagos mayores a 40 es: 50.63"
2.4. Con los datos siguientes:
61 88 73 49 41 72 99 07 12 13 87 91 05 17 97
proporciones <- c(61, 88, 73, 49, 41, 72, 99, 07, 12, 13, 87, 91, 05, 17, 97) #--> vector
pie(proporciones, main = "Diagrama Porcentual", labels = paste0(proporciones, "%"))
summary(x): este comando muestra un resumen general sobre las variables del data frame (mínimo, máximo, media, mediana, primer y tercer cuartil). Además, R reconoce que la variable Species es una variable categórica por lo que muestra la frecuencia de cada categoría.
fivenum(x): Se utiliza para devolver el resumen de datos de entrada de cinco números de Tukey, es decir,valor mínimo, valor de bisagra inferior, valor mediano, valor de bisagra superior y valor máximo de los datos de entrada.
La diferencia se encuentra en la salida de los datos.
#FUNCION SUMMARY
summary(proporciones)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 5.00 15.00 61.00 54.13 87.50 99.00
#FUNCION FIVENUM
fivenum(proporciones)
## [1] 5.0 15.0 61.0 87.5 99.0
2.5. R permite generar datos aleatorios con gran facilidad mediante instrucciones específicas que empiezan con “r” (rnorm, rpois, rbinom,…).
datos = rnorm(100)
datos
## [1] 2.00291127 0.14536935 0.65185560 -0.26868047 0.02743853 1.43074570
## [7] 0.41162077 1.64152127 1.09874838 1.18061169 -0.82081658 0.24090057
## [13] -0.45492975 1.11075569 0.92739471 0.48688196 1.44272028 -0.20802290
## [19] -0.77338676 0.17206633 1.46667235 -0.43345023 -0.61760147 -0.95700604
## [25] 0.94889290 -0.26666881 -0.57888691 0.41662595 0.24059435 -0.60676275
## [31] 0.28175746 -0.54856112 0.13600773 -0.56531940 -0.55834079 0.89424870
## [37] -0.64762247 -0.77659963 0.09621306 0.14864782 2.44302912 0.22962345
## [43] 0.52604831 -0.94739033 0.98148261 -0.57037764 -0.78500110 -0.16338325
## [49] 1.02681852 0.65378961 0.10395029 0.68228813 -2.61632292 0.63091540
## [55] -1.69667498 -1.35607860 0.27849054 0.48014471 -0.94241536 0.45845979
## [61] -0.70837460 0.34199287 -1.53471095 0.99109184 -0.02280760 -0.06782345
## [67] 0.28615635 1.12291928 -0.20783396 1.88232878 -0.86243242 -0.73258654
## [73] -0.55365515 1.86168600 -0.66923298 -0.11464296 -0.02440560 1.06028033
## [79] 1.96158762 -1.19436557 0.11016057 -0.40726522 -0.79605993 1.81685200
## [85] 1.36754286 -0.48325267 1.22576705 -0.78403560 0.46398404 0.35657264
## [91] 1.35583642 0.17968676 -0.37317407 2.17886339 -0.01139897 -0.72614924
## [97] -0.95716660 -1.58197807 -1.12521928 -1.57705347
hist(datos)
c) Realiza un resumen numérico de los datos.
summary(datos)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -2.6163 -0.6095 0.1071 0.1098 0.7353 2.4430
2.6. De forma similar al ejercicio genera 30 valores de una distribución binomial de parámetros (n=5 y p=0,9).
datosBinom = rbinom(n = 5, size = 30, prob = 0.9)
datosBinom
## [1] 28 23 29 26 25
barplot(prop.table(table(datosBinom)),col=c("red","yellow"),
main="Datos Binomiales",ylim=c(0,0.5),
ylab ="Frecuencias Relativas",las=1,font.axis=4)
#Resumen datos
summary(datosBinom)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 23.0 25.0 26.0 26.2 28.0 29.0
#Resumen datos binarios
summary(datos)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -2.6163 -0.6095 0.1071 0.1098 0.7353 2.4430
2.7. El número de fallos en los 23 primeros intentos de puesta en órbita de un satélite fue: 0 1 0 NA 0 0 0 0 0 1 1 1 0 0 3 0 0 0 0 0 2 0 1 (NA significa ”not available” – se ha perdido el dato).
orbitaSat = c(0, 1, 0, NA, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 1)
mean(orbitaSat,na.rm=TRUE)
## [1] 0.4545455
x[!is.na(orbitaSat)]
## [1] 1 3 5 9 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
boxplot(orbitaSat, notch = FALSE)
stripchart(orbitaSat, vertical = TRUE, method = "jitter",
pch = 19, add = TRUE, col = 1:length(levels(orbitaSat)))
summary(orbitaSat)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.0000 0.0000 0.0000 0.4545 1.0000 3.0000 1
hist(orbitaSat)
#Numero medio de errores
mean(orbitaSat,na.rm=TRUE)
## [1] 0.4545455
#posiscion del error
which(is.na(orbitaSat))
## [1] 4
#Valor NA
any(is.na(x))
## [1] FALSE
#Logica del error
is.na(orbitaSat)
## [1] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
2.8. En una encuesta en la que se evalúa el funcionamiento de un curso se han recogido las siguientes respuestas de 10 estudiantes a tres preguntas P1, P2 y P3.
estudiante = c(1,2,3,4,5,6,7,8,9,10)
p1 = c(3,3,3,4,3,4,3,4,4,3)
p2 = c(5,5,2,2,5,2,2,5,5,2)
p3 = c(1,3,1,3,3,3,1,3,1,1)
colegio = rbind(estudiante, p1, p2, p3)
colegio
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## estudiante 1 2 3 4 5 6 7 8 9 10
## p1 3 3 3 4 3 4 3 4 4 3
## p2 5 5 2 2 5 2 2 5 5 2
## p3 1 3 1 3 3 3 1 3 1 1
barplot(p1, main = "Pregunta 01",
xlab = "P1", ylab = "Frecuencia",
col = c("purple", "orange"))
barplot(p2, main = "Pregunta 02",
xlab = "P2", ylab = "Frecuencia",
col = c("purple", "orange"))
barplot(p3, main = "Pregunta 03",
xlab = "P3", ylab = "Frecuencia",
col = c("purple", "orange"))
colnames(colegio) = c("S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10")
colegio
## S1 S2 S3 S4 S5 S6 S7 S8 S9 S10
## estudiante 1 2 3 4 5 6 7 8 9 10
## p1 3 3 3 4 3 4 3 4 4 3
## p2 5 5 2 2 5 2 2 5 5 2
## p3 1 3 1 3 3 3 1 3 1 1
colegio2 = rbind(estudiante, p2, p3)
barplot(colegio2, main = "Preguntas Apiladas",
xlab = "P2 - P3", ylab = "Frecuencia",
col = c("red", "yellow"))
barplot(colegio, main = "Preguntas",
xlab = "P1 - P2 - P3", ylab = "Frecuencia",
col = c("red", "grey"))
2.9. Genera 2 vectores de 50 valores cada de una distribución normal con rnorm (50).
v1 = rnorm (50)
v2 = rnorm (50)
#VECTOR 1
v1
## [1] 1.854307150 -0.042211045 0.947700552 -2.119832347 -0.992527940
## [6] -0.291261200 -0.773514001 -1.321167761 0.003626056 0.079466458
## [11] 1.660125008 1.310315596 0.186007440 2.340648175 0.748307027
## [16] -1.452401930 -0.430238141 1.676650433 0.496859100 0.056625199
## [21] 0.956839907 -1.347165580 0.255278419 -0.375562100 1.280435546
## [26] -0.111755415 -0.396525833 2.517675992 0.680275620 0.125402196
## [31] 0.702817457 -0.411449601 0.460458179 -0.158757407 1.684700709
## [36] -0.893114004 0.218812624 0.470361193 1.069157982 1.746766940
## [41] 0.131642434 -0.262544319 0.404706264 1.303631054 0.455082291
## [46] -0.069138550 0.534122836 -1.042369528 -2.014149072 -0.463139333
#NORMALIDAD SHAPIRO-WILK
shapiro.test(v1)
##
## Shapiro-Wilk normality test
##
## data: v1
## W = 0.9881, p-value = 0.892
#VECTOR 2
v2
## [1] -1.45108436 -0.63936849 1.55873455 -0.22653067 -0.67190262 -0.16176752
## [7] -0.17317083 -0.55814822 0.33897951 0.36542426 0.06499541 0.57888150
## [13] 0.19715426 0.31590666 -0.50391543 0.50433783 -0.36980907 -0.59529961
## [19] -1.15444863 0.54659589 -0.82990168 0.42140965 0.58499144 0.74029436
## [25] -0.28303497 0.17191015 -2.30917158 0.87334543 1.68566682 -0.76572665
## [31] -1.41045526 -1.60907951 -1.21640857 1.13866144 -0.63762250 0.25631992
## [37] 0.15967310 -1.50601028 0.76817190 -0.32170260 0.53950054 1.70388109
## [43] -1.07641905 -0.11182638 -0.41727181 2.40188510 -1.77141392 1.60238197
## [49] -0.21394137 -0.77777439
#NORMALIDAD SHAPIRO-WILK
shapiro.test(v2)
##
## Shapiro-Wilk normality test
##
## data: v2
## W = 0.98947, p-value = 0.9331
t.test(v2, v2)
##
## Welch Two Sample t-test
##
## data: v2 and v2
## t = 0, df = 98, p-value = 1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.3915099 0.3915099
## sample estimates:
## mean of x mean of y
## -0.08488206 -0.08488206
2.10. Genera un vector de 50 valores por medio de rnorm y un vector de 50 valores por medio rbinom.
set.seed(0)
v3 = rnorm(50)
#VECTOR 3
v3
## [1] 1.262954285 -0.326233361 1.329799263 1.272429321 0.414641434
## [6] -1.539950042 -0.928567035 -0.294720447 -0.005767173 2.404653389
## [11] 0.763593461 -0.799009249 -1.147657009 -0.289461574 -0.299215118
## [16] -0.411510833 0.252223448 -0.891921127 0.435683299 -1.237538422
## [21] -0.224267885 0.377395646 0.133336361 0.804189510 -0.057106774
## [26] 0.503607972 1.085769362 -0.690953840 -1.284599354 0.046726172
## [31] -0.235706556 -0.542888255 -0.433310317 -0.649471647 0.726750747
## [36] 1.151911754 0.992160365 -0.429513109 1.238304101 -0.279346282
## [41] 1.757903090 0.560746091 -0.452783973 -0.832043296 -1.166570547
## [46] -1.065590580 -1.563782051 1.156536997 0.832047129 -0.227328691
#NORMALIDAD SHAPIRO-WILK
shapiro.test(v3)
##
## Shapiro-Wilk normality test
##
## data: v3
## W = 0.97356, p-value = 0.321
v4 = rbinom(n = 50, size = 30, prob = 0.9)
#VECTOR 4
v4
## [1] 27 26 28 28 22 27 28 29 27 25 27 23 26 28 27 29 30 26 29 27 27 23 27 27 29
## [26] 26 27 27 28 28 27 27 29 30 27 24 27 27 27 23 27 26 27 28 28 26 27 29 26 29
#NORMALIDAD SHAPIRO-WILK
shapiro.test(v4)
##
## Shapiro-Wilk normality test
##
## data: v4
## W = 0.88818, p-value = 0.0002001
#TESTT-STUDENT
t.test(v3, v4)
##
## Welch Two Sample t-test
##
## data: v3 and v4
## t = -97.28, df = 74.438, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -27.50815 -26.40399
## sample estimates:
## mean of x mean of y
## 0.02393097 26.98000000