#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")