Este cuaderno es una guía para facilitar el desarrollo de la actividades en clase de los cursos: Hidroclimatológia (pregrado y posgrado) y Modelación de procesos hidrológicos de la FEAR-PUJ.
Vamos a iniciar haciendo la creación de una variable. Para ello, se guardará el valor de temperatura en °C para la ciudad de méxico (datos del taller de temperatura).
Mexico_C <- 25
Mexico_C #numeric
## [1] 25
Ahora vamos a realizar la primera operación para la conversión. Recordemos que la ecuación para esta conversión es: _1.8(°C)+32=°F*_.
Mexico_F <- 1.8*Mexico_C+32
Mexico_F
## [1] 77
Ahora vamos a realizar la conversión de °C a °K. Recordemos que la ecuación para esta conversión es: (°C)+273=°K. Sin embargo recuerde que usted también podría realizar la conversión a Kelvin desde Fahrenheit.
Mexico_K <- Mexico_C+273
Mexico_K
## [1] 298
Ahora imagine que usted debe hacer 100 o 1 millón de conversiones de temepratura de °C a °F. En este caso usar el método planteado anteriormente no es muy útil que digamos. Para esto, lo que haremos será crear un vector aleatorio de valores de temperatura (de mentiras para este ejercicio) y programar la solución de manera automática
Vector_aleatorio_C <- runif(100,min=-10,max=38) #en este ejercicio usamos la función "runif" que sirve para crear valores aleatorios con dsitribución uniforme, usando límites para acotar el valor deseado
Vector_aleatorio_C
## [1] -8.8490278 19.3451075 -7.7651502 31.4521181 9.1907450 -4.6424562
## [7] 36.8602440 24.7477826 -2.4556198 31.9491959 -4.1803105 14.8405129
## [13] 31.3244742 12.8776558 32.3087304 37.2156071 28.4458946 -3.7323621
## [19] 5.4295660 -1.2013351 20.5778178 -7.6453728 33.6520035 29.9234472
## [25] 19.5940922 27.1839032 11.3722938 31.0459847 13.8734542 -9.0181408
## [31] -4.3054222 31.3644428 -5.1599142 17.9230224 32.7580779 -5.2224491
## [37] 13.9283315 28.9067102 23.3551179 25.3452615 13.5209213 5.9146504
## [43] -9.2058687 33.1099542 4.1454834 4.9714567 33.8428615 24.2767326
## [49] -2.8925005 36.4908493 8.9849263 1.7956690 20.0998155 19.6056781
## [55] 16.8023073 24.1738833 29.9353770 14.8836410 -3.6790781 11.6584816
## [61] 23.7508944 -1.1080748 33.6076237 -7.2318629 8.9894508 2.8448598
## [67] 8.9660417 11.2644890 6.1730076 29.3001085 0.1275631 9.0086073
## [73] 5.1405985 -2.9485275 18.9100247 -5.2813942 31.2570948 25.2489462
## [79] 16.0944855 15.4369728 -8.1522636 18.3436665 24.1116020 13.0028834
## [85] 9.6030854 17.1982936 14.8578053 21.6447089 29.0964436 7.0358057
## [91] 24.4080284 9.8458732 22.3465300 -0.7925113 23.7724615 25.5754688
## [97] 27.6796886 9.3006994 0.2449349 -3.4995333
Como pueden ver se creo el vector pero ahora tenemos muchos decimales. Normalmente la temperatura tiene uno o ningún decimal, por ello vamos usar la función round para redondear los números.
Vector_aleatorio_C_round <- round(Vector_aleatorio_C,1) # en este caso el 1 indica que queremos un solo decimal
Vector_aleatorio_C_round
## [1] -8.8 19.3 -7.8 31.5 9.2 -4.6 36.9 24.7 -2.5 31.9 -4.2 14.8 31.3 12.9 32.3
## [16] 37.2 28.4 -3.7 5.4 -1.2 20.6 -7.6 33.7 29.9 19.6 27.2 11.4 31.0 13.9 -9.0
## [31] -4.3 31.4 -5.2 17.9 32.8 -5.2 13.9 28.9 23.4 25.3 13.5 5.9 -9.2 33.1 4.1
## [46] 5.0 33.8 24.3 -2.9 36.5 9.0 1.8 20.1 19.6 16.8 24.2 29.9 14.9 -3.7 11.7
## [61] 23.8 -1.1 33.6 -7.2 9.0 2.8 9.0 11.3 6.2 29.3 0.1 9.0 5.1 -2.9 18.9
## [76] -5.3 31.3 25.2 16.1 15.4 -8.2 18.3 24.1 13.0 9.6 17.2 14.9 21.6 29.1 7.0
## [91] 24.4 9.8 22.3 -0.8 23.8 25.6 27.7 9.3 0.2 -3.5
También podriamos hacerlo sin decimales, para tener solamente números enteros.
Vector_aleatorio_C_round <- round(Vector_aleatorio_C,0) # en este caso el 0 indica que no queremos decimales
Vector_aleatorio_C_round # tenga en cuenta que como aquí no cambie el nombre de la variable los datos se sobreescriben y lo que teniamos guardado en el paso anterior desaparecerá
## [1] -9 19 -8 31 9 -5 37 25 -2 32 -4 15 31 13 32 37 28 -4 5 -1 21 -8 34 30 20
## [26] 27 11 31 14 -9 -4 31 -5 18 33 -5 14 29 23 25 14 6 -9 33 4 5 34 24 -3 36
## [51] 9 2 20 20 17 24 30 15 -4 12 24 -1 34 -7 9 3 9 11 6 29 0 9 5 -3 19
## [76] -5 31 25 16 15 -8 18 24 13 10 17 15 22 29 7 24 10 22 -1 24 26 28 9 0 -3
Ahora hagamos la conversión de °C a °F y °K. Lo primero, es introducirnos en el concepto del ciclo. Esto quiere decir que necesito que resuelva un problema ubicado en la columa 1, fila 1 y luego resuleva el que esta en la columna 1, fila 2 y así sucesivamente. Usted también puede programar el ejercicio para que resuelva por filas y no por columnas. Para los ciclos se usa la función for, en ella lo que se expresa, es que la variable de posición x debe cambiar de 1 (valor de inicio de la fila o columna) hasta el valor que usted requiera, para nuestro ejercicio será 100.
Iniciaremos creando la matriz (espacio de trabajo) donde guradaremos los resultados generados. Recuerde que en R, el orden para crear matriz indica: primer número los valores de inicio (0 en nuestro caso), el número de filas (100 en nuestro caso) y finalmente el número de columnas (1 en nuestro caso).
Vector_aleatorio_F<- matrix(0,100,1)
Vector_aleatorio_K<- matrix(0,100,1)
for (x in 1:100) {
Vector_aleatorio_F[x]<- 1.8*Vector_aleatorio_C_round[x]+32
Vector_aleatorio_K[x]<- Vector_aleatorio_C_round[x]+273
}
Ahora tenemos dos grupso de datos, uno con los datos en °C (archivo original) y otro con los datos en °F y °K y queremos organizalos en una misma tabla. Pero el archivo en el que creamos los datos en °C (el archivo original) esta en formato vector y los otros dos en formato matriz. Antes de consolidar la tabla requerimos que todos los datos esten en formato matriz y todos redondeados a números enteros.
Vector_aleatorio_F<- round(Vector_aleatorio_F,0) #redondeamos a entero
Vector_aleatorio_K<- round(Vector_aleatorio_K,0) #redondeamos a entero.
Vector_aleatorio_C_round <- as.matrix(Vector_aleatorio_C_round) #convertimos a matriz
Ahora si, consolidemos la tabla. Para esto usaremos la función cbind para agrupar por columas o crow para agrupar por filas.
Tabla_temp <- cbind(Vector_aleatorio_C_round, Vector_aleatorio_F, Vector_aleatorio_K)
Tabla_temp
## [,1] [,2] [,3]
## [1,] -9 16 264
## [2,] 19 66 292
## [3,] -8 18 265
## [4,] 31 88 304
## [5,] 9 48 282
## [6,] -5 23 268
## [7,] 37 99 310
## [8,] 25 77 298
## [9,] -2 28 271
## [10,] 32 90 305
## [11,] -4 25 269
## [12,] 15 59 288
## [13,] 31 88 304
## [14,] 13 55 286
## [15,] 32 90 305
## [16,] 37 99 310
## [17,] 28 82 301
## [18,] -4 25 269
## [19,] 5 41 278
## [20,] -1 30 272
## [21,] 21 70 294
## [22,] -8 18 265
## [23,] 34 93 307
## [24,] 30 86 303
## [25,] 20 68 293
## [26,] 27 81 300
## [27,] 11 52 284
## [28,] 31 88 304
## [29,] 14 57 287
## [30,] -9 16 264
## [31,] -4 25 269
## [32,] 31 88 304
## [33,] -5 23 268
## [34,] 18 64 291
## [35,] 33 91 306
## [36,] -5 23 268
## [37,] 14 57 287
## [38,] 29 84 302
## [39,] 23 73 296
## [40,] 25 77 298
## [41,] 14 57 287
## [42,] 6 43 279
## [43,] -9 16 264
## [44,] 33 91 306
## [45,] 4 39 277
## [46,] 5 41 278
## [47,] 34 93 307
## [48,] 24 75 297
## [49,] -3 27 270
## [50,] 36 97 309
## [51,] 9 48 282
## [52,] 2 36 275
## [53,] 20 68 293
## [54,] 20 68 293
## [55,] 17 63 290
## [56,] 24 75 297
## [57,] 30 86 303
## [58,] 15 59 288
## [59,] -4 25 269
## [60,] 12 54 285
## [61,] 24 75 297
## [62,] -1 30 272
## [63,] 34 93 307
## [64,] -7 19 266
## [65,] 9 48 282
## [66,] 3 37 276
## [67,] 9 48 282
## [68,] 11 52 284
## [69,] 6 43 279
## [70,] 29 84 302
## [71,] 0 32 273
## [72,] 9 48 282
## [73,] 5 41 278
## [74,] -3 27 270
## [75,] 19 66 292
## [76,] -5 23 268
## [77,] 31 88 304
## [78,] 25 77 298
## [79,] 16 61 289
## [80,] 15 59 288
## [81,] -8 18 265
## [82,] 18 64 291
## [83,] 24 75 297
## [84,] 13 55 286
## [85,] 10 50 283
## [86,] 17 63 290
## [87,] 15 59 288
## [88,] 22 72 295
## [89,] 29 84 302
## [90,] 7 45 280
## [91,] 24 75 297
## [92,] 10 50 283
## [93,] 22 72 295
## [94,] -1 30 272
## [95,] 24 75 297
## [96,] 26 79 299
## [97,] 28 82 301
## [98,] 9 48 282
## [99,] 0 32 273
## [100,] -3 27 270