#Punto 1
#ejercicio de clase con misma semilla
#1.1 al 1.4
set.seed(1032439063)
arv01 = rnorm(n = 120, mean = 63,sd = 3) #x masa de 100 g de arveja
mean(arv01)
## [1] 62.85146
median(arv01)
## [1] 62.65855
var(arv01)
## [1] 8.572903
sd(arv01)
## [1] 2.927952
min(arv01)
## [1] 56.39237
max(arv01)
## [1] 69.84119
quantile(arv01, 0.25)
## 25%
## 61.10857
quantile(arv01, 0.75)
## 75%
## 64.64555
quantile(arv01, 0.9)
## 90%
## 66.57252
#si tengo dudas sobre que hace una función, peudo escribir el signo ? al final de la funcion
#1.5
length(arv01)
## [1] 120
sd(arv01) # se calcula a partir de la desviacion estandar, sobre la media y se multiplica por 100
## [1] 2.927952
cv = sd((arv01)/mean(arv01))*100 #creo mi vector
#1.6
cv #llamo el vector
## [1] 4.658527
#1.7 y 1.8 #donde esta un valor con una condicion, su posicion, no su valor
which.max(arv01) #valor maximo en arvejas
## [1] 98
arv01[101] #extraeme el valor en la posición 101
## [1] 65.26914
which.min(arv01) #ubicar posicion valor minimo
## [1] 61
#1.9
table(arv01>65) #datos superiores a 65
##
## FALSE TRUE
## 96 24
#1.10
table(arv01<55) #datos inferiores a 55
##
## FALSE
## 120
#1.11
table(arv01>=60)
##
## FALSE TRUE
## 21 99
#1.12 operador & para contar en u intervalo
table(arv01>60 & arv01<65)
##
## FALSE TRUE
## 45 75
#1.13 operador | para separar? aca me buscó datos menores a 58 y mayores a 62
#condicional o, si cumple cualquiera de las dos condiciones
table(arv01<58 | arv01>62)
##
## FALSE TRUE
## 39 81
#1.14 operador !
#datos no superiores a 65
table(!(arv01>65))
##
## FALSE TRUE
## 24 96
table(arv01<65)
##
## FALSE TRUE
## 24 96
#1.15 imprimir datos con dos decimales
round(arv01,2)
## [1] 58.95 63.89 63.75 59.53 67.96 60.01 62.66 63.62 58.32 62.46 61.60 61.97
## [13] 61.84 64.19 56.48 63.78 65.03 64.77 63.08 62.36 62.39 61.85 62.66 61.47
## [25] 60.40 67.17 63.53 64.88 63.83 63.57 64.51 64.35 58.21 66.01 61.97 57.72
## [37] 61.32 66.58 68.13 57.06 60.74 63.82 59.78 68.13 62.92 59.77 62.75 61.97
## [49] 60.43 63.94 58.62 61.58 61.71 64.75 68.76 64.51 64.65 62.37 62.39 69.30
## [61] 56.39 64.36 61.37 59.18 62.54 64.08 64.64 67.08 61.11 64.14 56.55 65.18
## [73] 63.29 63.29 59.50 65.45 65.15 62.07 64.21 61.96 66.10 69.08 62.94 60.00
## [85] 59.98 63.34 60.92 65.00 62.53 61.47 62.11 68.87 63.97 62.03 61.65 60.68
## [97] 68.96 69.84 62.22 62.67 65.27 62.18 56.57 59.47 58.88 66.57 62.12 60.17
## [109] 65.64 62.26 58.69 59.93 61.09 66.02 64.60 64.72 60.74 66.07 65.84 62.68
#1.16 imprimir datos sin decimales, veo que aproxima el valor
round(arv01,0)
## [1] 59 64 64 60 68 60 63 64 58 62 62 62 62 64 56 64 65 65 63 62 62 62 63 61 60
## [26] 67 64 65 64 64 65 64 58 66 62 58 61 67 68 57 61 64 60 68 63 60 63 62 60 64
## [51] 59 62 62 65 69 65 65 62 62 69 56 64 61 59 63 64 65 67 61 64 57 65 63 63 59
## [76] 65 65 62 64 62 66 69 63 60 60 63 61 65 63 61 62 69 64 62 62 61 69 70 62 63
## [101] 65 62 57 59 59 67 62 60 66 62 59 60 61 66 65 65 61 66 66 63
#1.17 crear dos matrices
matrix01 = matrix(rnorm(9), nrow = 3, ncol = 3) #3 argumentos: numero de datos, #filas y # de columnas
matrix02 = matrix(rnorm(9), nrow = 3, ncol = 3)
matrix03 = matrix(data = c(1,2,3,4,5,6,7,8,9), nrow = 3, ncol = 3, byrow = TRUE) #organizo datos por filas
matrix04 = matrix(data = c(1,2,3,4,5,6,7,8,9), nrow = 3, ncol = 3)
print(matrix01)
## [,1] [,2] [,3]
## [1,] -2.3335133 -0.9550275 -0.060996367
## [2,] 0.1599271 0.3157398 -0.774482885
## [3,] -1.9024463 -0.4503356 -0.006747219
print(matrix02)
## [,1] [,2] [,3]
## [1,] -0.3765487 1.0934258 -0.8687352
## [2,] -0.2843419 0.1557515 -0.7907179
## [3,] 0.2653226 -0.4236173 -1.4069869
print(matrix03)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
print(matrix04)
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
#1.18 y 1.19
matrix01+matrix02
## [,1] [,2] [,3]
## [1,] -2.7100619 0.1383984 -0.9297315
## [2,] -0.1244148 0.4714913 -1.5652008
## [3,] -1.6371238 -0.8739530 -1.4137341
matrix01-matrix02
## [,1] [,2] [,3]
## [1,] -1.956965 -2.04845326 0.80773881
## [2,] 0.444269 0.15998826 0.01623505
## [3,] -2.167769 -0.02671831 1.40023964
#1.20
matrix01*matrix02 #esto me multiplica valor por valor
## [,1] [,2] [,3]
## [1,] 0.87868128 -1.04425167 0.052989690
## [2,] -0.04547397 0.04917695 0.612397508
## [3,] -0.50476200 0.19076997 0.009493248
matrix01%*%matrix02 #esta es producto matricial, manera de multiplicar entre matrices ojo con el orden de multiplicacion de matrices, no es lo mismo A%*%B que B%*%A, ojo con el numero de columnas de A que debe coincidir con el numero de filas de B
## [,1] [,2] [,3]
## [1,] 1.1340518 -2.6744315 2.8681835
## [2,] -0.3554862 0.5521297 0.7010918
## [3,] 0.8426227 -2.1474662 2.0183038
#PUNTO 2
#2.1
#crear subconjunto de datos entre 60 y 68
#y = avr01[table(arv01>=60 | arv01<=68)] #Aca estoy observando un error que hice, escribí en forma de tabla
avry = arv01[arv01 > 60 & arv01 < 68] #aca si uso & me genera los datos en un intervalo
#si uno operador | me genera dos condiciones
y = arv01[(arv01>60)|(arv01<68)]
#2.2
length(y)
## [1] 120
#me toma los 120 datos xk son todos los mayores a 60 y todos los menores a 68 que se superponen
#2.3 al 2.6
y/2 #dividir en 2
## [1] 29.47537 31.94401 31.87652 29.76613 33.97812 30.00715 31.32868 31.80958
## [9] 29.15909 31.23153 30.80157 30.98264 30.92142 32.09259 28.24025 31.89077
## [17] 32.51578 32.38465 31.53754 31.17887 31.19282 30.92362 31.32986 30.73504
## [25] 30.20103 33.58539 31.76293 32.43958 31.91445 31.78601 32.25675 32.17675
## [33] 29.10531 33.00278 30.98310 28.86155 30.65906 33.29103 34.06557 28.53007
## [41] 30.37119 31.91132 29.89230 34.06435 31.45970 29.88413 31.37531 30.98425
## [49] 30.21504 31.96753 29.31066 30.79057 30.85451 32.37643 34.37974 32.25567
## [57] 32.32362 31.18266 31.19671 34.65194 28.19619 32.18116 30.68489 29.58897
## [65] 31.26801 32.04114 32.32249 33.53886 30.55744 32.06760 28.27518 32.59188
## [73] 31.64484 31.64680 29.74868 32.72465 32.57288 31.03463 32.10271 30.98071
## [81] 33.05006 34.53938 31.46792 29.99815 29.98804 31.67140 30.45993 32.49887
## [89] 31.26694 30.73272 31.05464 34.43513 31.98539 31.01739 30.82687 30.34101
## [97] 34.48080 34.92059 31.10984 31.33368 32.63457 31.09076 28.28717 29.73577
## [105] 29.44116 33.28573 31.06164 30.08439 32.81792 31.12912 29.34489 29.96700
## [113] 30.54481 33.01036 32.30145 32.36094 30.37147 33.03568 32.92160 31.33990
y**2 #elevar a potencia de 2
## [1] 3475.190 4081.680 4064.450 3544.089 4618.051 3601.716 3925.946 4047.397
## [9] 3401.011 3901.633 3794.947 3839.696 3824.536 4119.738 3190.047 4068.086
## [17] 4229.103 4195.062 3978.466 3888.488 3891.969 3825.081 3926.242 3778.570
## [25] 3648.410 4511.915 4035.536 4209.305 4074.130 4041.401 4161.992 4141.372
## [33] 3388.476 4356.733 3839.810 3331.957 3759.911 4433.170 4641.852 3255.859
## [41] 3689.637 4073.329 3574.197 4641.519 3958.851 3572.245 3937.640 3840.095
## [49] 3651.795 4087.693 3436.460 3792.236 3808.004 4192.934 4727.867 4161.713
## [57] 4179.266 3889.434 3892.939 4803.029 3180.100 4142.507 3766.250 3502.029
## [65] 3910.753 4106.539 4178.974 4499.420 3735.029 4113.324 3197.944 4248.922
## [73] 4005.584 4006.081 3539.936 4283.611 4243.970 3852.593 4122.336 3839.218
## [81] 4369.225 4771.876 3960.919 3599.556 3597.129 4012.311 3711.228 4224.707
## [89] 3910.487 3778.001 3857.564 4743.113 4092.262 3848.314 3801.184 3682.307
## [97] 4755.703 4877.792 3871.288 3927.199 4260.060 3866.542 3200.656 3536.863
## [105] 3467.128 4431.759 3859.301 3620.281 4308.063 3876.089 3444.490 3592.086
## [113] 3731.941 4358.734 4173.533 4188.922 3689.704 4365.424 4335.328 3928.758
#2.5
log10y = log10(y)
#2.6 verificar si tenemos valores negativos en log10y
table(log10y < 0)
##
## FALSE
## 120
# Ninguno es negativo
#2.7
is.na(log10y) #buscar valores no disponibles
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [97] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [109] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#parece que todos estan disponibles
#2.8 ANY verificar si tengo valores menos a 0
any(y < 0)
## [1] FALSE
#2.9 ALL verificar valores superiores a __
all(y > 50)
## [1] TRUE
#2.10
any(y > 50)
## [1] TRUE
#2.11
z <- seq(-5, 5, 1)
z
## [1] -5 -4 -3 -2 -1 0 1 2 3 4 5
#2.12 crear numeros enteros CON REEMPLAZO, es decir, puede repetir numeros del rango que le dí
v = sample(2:8, 20, replace=TRUE)
v
## [1] 7 4 6 3 2 6 8 5 5 6 8 6 2 4 6 8 3 2 6 4
#2.13 sacar valores que no se repiten con unique
unique(v)
## [1] 7 4 6 3 2 8 5
#me muestra los valores sin las repetiiones y muestra cada valor único solo una vez
#2.14 generar un vector xx y calcular su media
xx = c(10, NULL, 20, 30,40,50, NA) #Null es un tipo de objeto y NA representa valores faltantes
mean(xx, na.rm=TRUE)
## [1] 30
#2.15
arv02 = runif(n = 12, min = 5, max = 6.5)
arv03 = round(arv02, 0)
sort(arv03) #de menor a mayor
## [1] 5 5 5 5 5 6 6 6 6 6 6 6
#2.16
sort(arv03, TRUE) #decreciente, de mayor a menor
## [1] 6 6 6 6 6 6 6 5 5 5 5 5
#2.17
rev(arv03) #invierte el orden de los elementos en el vector origial
## [1] 6 6 6 6 5 6 6 5 5 5 5 6
#2.18
vector01 = rnorm(n = 10, mean = 12, sd = 2)
vector02 = rnorm(n = 10, 10, 2)
#redondear
vector01 = round(vector01, ) #si no pongo valor, se redondea a # enteros
vector02 = round(vector02, )
vector01
## [1] 11 12 12 12 13 13 14 13 10 14
vector02
## [1] 7 14 11 8 8 13 6 8 8 9
#combinar
union = rbind(vector01,vector02)
is.vector(union)
## [1] FALSE
is.matrix(union) #la union de mis vectores me generó una matriz
## [1] TRUE
#2.19 #crear dos vectores y unirlos por columna
vector03 = round(runif(n = 36, min = 10, max = 50), 0)
vector04 = round(runif(n = 36, min =60, max = 120), 0)
union02 = cbind(vector03,vector04)
union02
## vector03 vector04
## [1,] 14 92
## [2,] 13 88
## [3,] 15 98
## [4,] 24 81
## [5,] 11 66
## [6,] 23 106
## [7,] 18 85
## [8,] 45 70
## [9,] 38 92
## [10,] 11 72
## [11,] 23 101
## [12,] 12 107
## [13,] 38 97
## [14,] 39 111
## [15,] 18 107
## [16,] 31 75
## [17,] 29 111
## [18,] 32 83
## [19,] 44 106
## [20,] 12 83
## [21,] 39 93
## [22,] 19 98
## [23,] 16 96
## [24,] 42 111
## [25,] 39 120
## [26,] 26 119
## [27,] 29 93
## [28,] 37 85
## [29,] 49 115
## [30,] 47 84
## [31,] 18 112
## [32,] 11 86
## [33,] 24 106
## [34,] 10 113
## [35,] 17 94
## [36,] 20 64
is.vector(union02)
## [1] FALSE
is.matrix(union02) #se em generó una matriz
## [1] TRUE
#2.20
vv=round(rexp(20,1.2),2)
vv[5]=pi/10 #modifiqué la posicion 5 con el valor de pi / 10 = 0.31415...
vv
## [1] 1.4700000 0.1000000 0.0100000 0.6200000 0.3141593 0.1900000 0.3800000
## [8] 0.4000000 0.8900000 0.2300000 1.3400000 1.0400000 0.6100000 1.0500000
## [15] 0.5300000 2.1600000 0.7100000 0.1400000 0.5100000 0.9800000
#Punto 0.3
#3.1
X <- matrix(c(0, 2, 4, 6, 8, 1), nrow = 3)
#3.2
Z <- matrix(c(0, 2, 4, 6, 8, 1), ncol= 3)
#3.3 hallar dimension matrix X, es como el length de los vectores
dim(X)
## [1] 3 2
#tengo 3 filas y dos col
#3.4
#W <- matrix(c(0, 2, 4, 6, 8, 1), nrow = 10) ##el que intenté hacer
W = round(matrix(data = rnorm(n = 100), ncol = 10), 2) #el que hicimos en clase
#3.5 extraer datos de la columna 1
W [,1]
## [1] -1.51 -2.08 -0.70 0.61 -1.43 -0.33 -0.63 -0.18 -0.15 -0.04
#3.6 extraer valores de la fila 3
W [3,]
## [1] -0.70 -1.13 -1.08 0.90 -1.11 1.46 -1.43 1.32 -0.88 0.29
#3.7 extraer un valor especifico
W [5,2]
## [1] -1.95
#3.8 y 3.9 extraer # col y # filas
ncol(W)
## [1] 10
nrow(W)
## [1] 10
#3.10 trasponer matrices, convertir una fila a una columna con funcion t
t(W)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] -1.51 -2.08 -0.70 0.61 -1.43 -0.33 -0.63 -0.18 -0.15 -0.04
## [2,] -0.29 0.34 -1.13 1.12 -1.95 0.87 1.51 0.34 -0.75 -0.83
## [3,] -0.17 -0.51 -1.08 -0.37 -0.26 -1.48 0.16 -0.96 0.62 -0.44
## [4,] 1.13 0.06 0.90 -1.34 -0.64 0.62 -0.46 -0.67 -0.28 0.49
## [5,] 0.50 0.74 -1.11 1.96 -1.24 -1.33 0.31 -1.99 0.58 0.27
## [6,] -0.12 0.54 1.46 0.75 0.06 -0.09 1.77 0.23 -0.19 -0.40
## [7,] 2.01 0.57 -1.43 0.19 -0.68 1.34 -0.20 0.39 0.21 0.10
## [8,] 0.18 0.34 1.32 0.18 0.44 1.07 -0.65 -0.10 -1.94 1.27
## [9,] 0.16 -2.07 -0.88 -0.12 0.31 1.46 -1.11 -0.08 -0.42 -0.11
## [10,] 0.23 1.68 0.29 -0.57 0.24 -1.04 -0.09 0.21 1.27 -1.92
W
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] -1.51 -0.29 -0.17 1.13 0.50 -0.12 2.01 0.18 0.16 0.23
## [2,] -2.08 0.34 -0.51 0.06 0.74 0.54 0.57 0.34 -2.07 1.68
## [3,] -0.70 -1.13 -1.08 0.90 -1.11 1.46 -1.43 1.32 -0.88 0.29
## [4,] 0.61 1.12 -0.37 -1.34 1.96 0.75 0.19 0.18 -0.12 -0.57
## [5,] -1.43 -1.95 -0.26 -0.64 -1.24 0.06 -0.68 0.44 0.31 0.24
## [6,] -0.33 0.87 -1.48 0.62 -1.33 -0.09 1.34 1.07 1.46 -1.04
## [7,] -0.63 1.51 0.16 -0.46 0.31 1.77 -0.20 -0.65 -1.11 -0.09
## [8,] -0.18 0.34 -0.96 -0.67 -1.99 0.23 0.39 -0.10 -0.08 0.21
## [9,] -0.15 -0.75 0.62 -0.28 0.58 -0.19 0.21 -1.94 -0.42 1.27
## [10,] -0.04 -0.83 -0.44 0.49 0.27 -0.40 0.10 1.27 -0.11 -1.92
#3.11 extraer diagnoal de w
diag(W)
## [1] -1.51 0.34 -1.08 -1.34 -1.24 -0.09 -0.20 -0.10 -0.42 -1.92
#3.12 tiene W inversa? #solo matrices cuadradas pueden tener inversa
w_inversa = solve(W) #parece que si
#Las siguientes lineas las tomé de chatgpt
# Calcular el determinante de la matriz
det_w <- det(W)
# Verificar si el determinante es diferente de cero
if (det_w != 0) {
# La matriz tiene inversa, puedes usar solve()
w_inversa <- solve(W)
print("La matriz tiene inversa:")
print(w_inversa)
} else {
print("La matriz no tiene inversa porque su determinante es cero.")
}
## [1] "La matriz tiene inversa:"
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.38648567 -0.34871219 0.256085017 0.24677943 -0.394559338 -0.5616076
## [2,] -0.40331344 0.26577655 -0.216765706 -0.19857611 -0.064393530 0.3881015
## [3,] 0.68094661 -0.37589031 -0.196432044 -0.14401945 0.078265585 -0.9121247
## [4,] -0.09208815 0.03616652 0.189730760 -0.29804306 -0.256807820 0.3102187
## [5,] -0.15775175 0.14048504 0.031679538 0.19811084 0.019707513 0.2620274
## [6,] 0.67126362 -0.48836700 0.363375921 0.31094491 -0.015257306 -0.4691812
## [7,] 0.85988116 -0.32545113 0.031631675 0.24530808 -0.175658874 -0.6671576
## [8,] 0.46506658 -0.08808905 0.044283982 0.16889409 0.008828467 -0.5999710
## [9,] -0.04720507 -0.14241028 -0.001995586 0.09088205 0.266571104 0.3984594
## [10,] 0.17982700 0.04218332 0.141612893 0.12000817 -0.060050151 -0.1877122
## [,7] [,8] [,9] [,10]
## [1,] -0.319141543 0.56047833 -0.21978073 -0.10763804
## [2,] 0.187383234 -0.29877366 -0.06516588 -0.09238477
## [3,] 0.136771160 0.28297593 -0.88696787 -0.29254816
## [4,] 0.064339684 -0.36628661 0.24758254 0.05830399
## [5,] -0.056827897 -0.42417301 0.26917472 0.04484749
## [6,] 0.170186855 0.32404547 -0.26750825 -0.28158414
## [7,] -0.151626243 0.73218572 -0.37387337 -0.07050295
## [8,] -0.272752452 0.28786078 -0.87179484 -0.27111660
## [9,] -0.003243191 -0.44115710 0.04883555 -0.35585345
## [10,] -0.320851589 0.08581109 -0.20614479 -0.49437864
#hasta aqui lo tome de chatgpt
#3.13 multiplicar w con su inversa. No olvidar que multiplicar matrices es con %*%
W_x_W_inversa = W%*%w_inversa
ncol(W_x_W_inversa)
## [1] 10
nrow(W_x_W_inversa) #se obtuvo una matriz cuadrada
## [1] 10
#3.14 secuencia de 1 al 4 dos veces
x01 = rep(1:4, 2)
x01
## [1] 1 2 3 4 1 2 3 4
#3.15
x02 = rep(1:4, each=2)
x02 #se observa que escribió cada numero 2 veces seguidas en lugar de dos series seguidas
## [1] 1 1 2 2 3 3 4 4
#3.16
TRT = c("T1", "T2")
class(TRT) #clase caracter
## [1] "character"
#3.17
rep(TRT, each=4) #aca se repitio cada trt 4 veces
## [1] "T1" "T1" "T1" "T1" "T2" "T2" "T2" "T2"
#3.18
rep(TRT, times=2) #aca se repitió pero solo 2 veces
## [1] "T1" "T2" "T1" "T2"
#3.19
TRT2 = c("ancho1", "largo1", "diam1", "grosor1")
rep(TRT2, each=4, times=2) #aca cada repeticion se hizo inicialmente 4 veces y luego este resultado se hizo 2 veces
## [1] "ancho1" "ancho1" "ancho1" "ancho1" "largo1" "largo1" "largo1"
## [8] "largo1" "diam1" "diam1" "diam1" "diam1" "grosor1" "grosor1"
## [15] "grosor1" "grosor1" "ancho1" "ancho1" "ancho1" "ancho1" "largo1"
## [22] "largo1" "largo1" "largo1" "diam1" "diam1" "diam1" "diam1"
## [29] "grosor1" "grosor1" "grosor1" "grosor1"
#3.20
I5 <- diag(5) #matriz de identidad tamaño 5
I5
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 0 0 0 0
## [2,] 0 1 0 0 0
## [3,] 0 0 1 0 0
## [4,] 0 0 0 1 0
## [5,] 0 0 0 0 1
#3.21 convertir matrix w en vector
is.matrix(W) #W es matriz
## [1] TRUE
ww = c(W) #cree a ww donde w es convertido en vector
W
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] -1.51 -0.29 -0.17 1.13 0.50 -0.12 2.01 0.18 0.16 0.23
## [2,] -2.08 0.34 -0.51 0.06 0.74 0.54 0.57 0.34 -2.07 1.68
## [3,] -0.70 -1.13 -1.08 0.90 -1.11 1.46 -1.43 1.32 -0.88 0.29
## [4,] 0.61 1.12 -0.37 -1.34 1.96 0.75 0.19 0.18 -0.12 -0.57
## [5,] -1.43 -1.95 -0.26 -0.64 -1.24 0.06 -0.68 0.44 0.31 0.24
## [6,] -0.33 0.87 -1.48 0.62 -1.33 -0.09 1.34 1.07 1.46 -1.04
## [7,] -0.63 1.51 0.16 -0.46 0.31 1.77 -0.20 -0.65 -1.11 -0.09
## [8,] -0.18 0.34 -0.96 -0.67 -1.99 0.23 0.39 -0.10 -0.08 0.21
## [9,] -0.15 -0.75 0.62 -0.28 0.58 -0.19 0.21 -1.94 -0.42 1.27
## [10,] -0.04 -0.83 -0.44 0.49 0.27 -0.40 0.10 1.27 -0.11 -1.92
ww #comparo a w y ww como matriz y vector
## [1] -1.51 -2.08 -0.70 0.61 -1.43 -0.33 -0.63 -0.18 -0.15 -0.04 -0.29 0.34
## [13] -1.13 1.12 -1.95 0.87 1.51 0.34 -0.75 -0.83 -0.17 -0.51 -1.08 -0.37
## [25] -0.26 -1.48 0.16 -0.96 0.62 -0.44 1.13 0.06 0.90 -1.34 -0.64 0.62
## [37] -0.46 -0.67 -0.28 0.49 0.50 0.74 -1.11 1.96 -1.24 -1.33 0.31 -1.99
## [49] 0.58 0.27 -0.12 0.54 1.46 0.75 0.06 -0.09 1.77 0.23 -0.19 -0.40
## [61] 2.01 0.57 -1.43 0.19 -0.68 1.34 -0.20 0.39 0.21 0.10 0.18 0.34
## [73] 1.32 0.18 0.44 1.07 -0.65 -0.10 -1.94 1.27 0.16 -2.07 -0.88 -0.12
## [85] 0.31 1.46 -1.11 -0.08 -0.42 -0.11 0.23 1.68 0.29 -0.57 0.24 -1.04
## [97] -0.09 0.21 1.27 -1.92
is.matrix(ww) #ww es vector
## [1] FALSE
#3.22
det(W)
## [1] -907.3707
#3.23
colSums(W) #suma de columnas de W
## [1] -6.44 -0.77 -4.49 -0.19 -1.31 4.01 2.50 2.11 -2.86 0.30
#3.24
rowSums(W) #suma de las filas
## [1] 2.12 -0.39 -2.36 2.41 -5.15 1.09 0.61 -2.81 -1.05 -1.61
#3.25
W1 = W[,-1] #eliminé la primera columna
#3.26
W2 = W1[-1,] #eliminé la primera fila
#3.27
pp = round(runif(n = 30, 10, 20), ) #precipitacion diaria
ppa = cumsum(pp) #acumulacion diaria de la lluvia
pp
## [1] 13 19 15 20 16 19 15 13 15 18 14 17 18 14 12 12 15 20 16 18 12 18 17 11 12
## [26] 16 11 13 17 17
ppa
## [1] 13 32 47 67 83 102 117 130 145 163 177 194 212 226 238 250 265 285 301
## [20] 319 331 349 366 377 389 405 416 429 446 463
#3.28
ppa[15] #el día 15 tenía una acumulacion de 210 unidades de precipiation
## [1] 238
#3.29
summary(pp) #me generó datos de la lluvia que dicen que mi promedoi es 14,2, el valor de la mitad es 13,5, los valores extremos fueron 10 y 20, y el 1er y 3er quartil son 12 y 16,75 respectivamente
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 11.00 13.00 15.50 15.43 17.75 20.00
#3.30
pp
## [1] 13 19 15 20 16 19 15 13 15 18 14 17 18 14 12 12 15 20 16 18 12 18 17 11 12
## [26] 16 11 13 17 17
diff(pp) #de un numero, resté el siguiente de la serie
## [1] 6 -4 5 -4 3 -4 -2 2 3 -4 3 1 -4 -2 0 3 5 -4 2 -6 6 -1 -6 1 4
## [26] -5 2 4 0
#Punto 4
#4.1 y 4.2
set.seed(6420)
pH = runif(40,5,6)
hist(pH, xlab= "pH", main = "distribución del pH", col= "lightblue", border=FALSE, ylab= "Frecuencia")

#4.3
hist(pH, xlab= "pH", main = "distribución del pH", col= "lightblue", border=FALSE, ylab= "Frecuencia", xlim = c(4,7))

#Este histograma tiene un rango mayor y definido
#4.4
hist(pH, xlab= "pH", main = "distribución del pH", col= "lightblue", border=FALSE, ylab= "Frecuencia", xlim = c(4,7), ylim = c(0,12))

#aqui amplié el rango y
#4.5 agregar lineas
hist(pH, xlab = "pH", main = "distribución del pH", col= "lightblue", border = FALSE, ylab = "Frecuencia", xlim = c(4.7, 6.3), ylim = c(0, 11))
abline(v = mean(pH), col = "darkred", lty = 3, lwd = 2)

#4.6 y 4.7
boxplot(pH, main = "Distribucion del pH", col = "lightblue", horizontal = TRUE)

#4.8
#señalar la media del pH
boxplot(pH, main = "Distribucion del pH", col = "lightblue", horizontal = TRUE)
points(x = mean(pH), y = 1, col = "blue", cex = 2, pch = 20)

#punto 5
#install.packages("rafalib")