En este documento se presenta de manera introductoria los procesos para el uso de las condiciones lógicas que permiten separar datos y establecer subconjuntos de bases de datos grandes.
El proceso que en este documento se muestra es básico pero serviría de apoyo para el desarrollo de condiciones lógicas más avanzadas.
Para ejemplificar el uso de las condiciones lógicas se hará uso de la base de datos “beaver1” la cual se encuentra en el paquete datasets y cuya descripción es la siguiente:
beavers {datasets} R Documentation
Body Temperature Series of Two Beavers
Description
Reynolds (1994) describes a small part of a study of the long-term temperature dynamics of beaver Castor canadensis in north-central Wisconsin. Body temperature was measured by telemetry every 10 minutes for four females, but data from a one period of less than a day for each of two animals is used there.
Format
The beaver1 data frame has 114 rows and 4 columns on body temperature measurements at 10 minute intervals.
The variables are as follows:
day: Day of observation (in days since the beginning of 1990), December 12–13 (beaver1) and November 3–4 (beaver2).
time: Time of observation, in the form 0330 for 3:30am
temp: Measured body temperature in degrees Celsius.
activ: Indicator of activity outside the retreat.
La base de datos a ser utilizada es la siguiente:
beaver1
## day time temp activ
## 1 346 840 36.33 0
## 2 346 850 36.34 0
## 3 346 900 36.35 0
## 4 346 910 36.42 0
## 5 346 920 36.55 0
## 6 346 930 36.69 0
## 7 346 940 36.71 0
## 8 346 950 36.75 0
## 9 346 1000 36.81 0
## 10 346 1010 36.88 0
## 11 346 1020 36.89 0
## 12 346 1030 36.91 0
## 13 346 1040 36.85 0
## 14 346 1050 36.89 0
## 15 346 1100 36.89 0
## 16 346 1110 36.67 0
## 17 346 1120 36.50 0
## 18 346 1130 36.74 0
## 19 346 1140 36.77 0
## 20 346 1150 36.76 0
## 21 346 1200 36.78 0
## 22 346 1210 36.82 0
## 23 346 1220 36.89 0
## 24 346 1230 36.99 0
## 25 346 1240 36.92 0
## 26 346 1250 36.99 0
## 27 346 1300 36.89 0
## 28 346 1310 36.94 0
## 29 346 1320 36.92 0
## 30 346 1330 36.97 0
## 31 346 1340 36.91 0
## 32 346 1350 36.79 0
## 33 346 1400 36.77 0
## 34 346 1410 36.69 0
## 35 346 1420 36.62 0
## 36 346 1430 36.54 0
## 37 346 1440 36.55 0
## 38 346 1450 36.67 0
## 39 346 1500 36.69 0
## 40 346 1510 36.62 0
## 41 346 1520 36.64 0
## 42 346 1530 36.59 0
## 43 346 1540 36.65 0
## 44 346 1550 36.75 0
## 45 346 1600 36.80 0
## 46 346 1610 36.81 0
## 47 346 1620 36.87 0
## 48 346 1630 36.87 0
## 49 346 1640 36.89 0
## 50 346 1650 36.94 0
## 51 346 1700 36.98 0
## 52 346 1710 36.95 0
## 53 346 1720 37.00 0
## 54 346 1730 37.07 1
## 55 346 1740 37.05 0
## 56 346 1750 37.00 0
## 57 346 1800 36.95 0
## 58 346 1810 37.00 0
## 59 346 1820 36.94 0
## 60 346 1830 36.88 0
## 61 346 1840 36.93 0
## 62 346 1850 36.98 0
## 63 346 1900 36.97 0
## 64 346 1910 36.85 0
## 65 346 1920 36.92 0
## 66 346 1930 36.99 0
## 67 346 1940 37.01 0
## 68 346 1950 37.10 1
## 69 346 2000 37.09 0
## 70 346 2010 37.02 0
## 71 346 2020 36.96 0
## 72 346 2030 36.84 0
## 73 346 2040 36.87 0
## 74 346 2050 36.85 0
## 75 346 2100 36.85 0
## 76 346 2110 36.87 0
## 77 346 2120 36.89 0
## 78 346 2130 36.86 0
## 79 346 2140 36.91 0
## 80 346 2150 37.53 1
## 81 346 2200 37.23 0
## 82 346 2210 37.20 0
## 83 346 2230 37.25 1
## 84 346 2240 37.20 0
## 85 346 2250 37.21 0
## 86 346 2300 37.24 1
## 87 346 2310 37.10 0
## 88 346 2320 37.20 0
## 89 346 2330 37.18 0
## 90 346 2340 36.93 0
## 91 346 2350 36.83 0
## 92 347 0 36.93 0
## 93 347 10 36.83 0
## 94 347 20 36.80 0
## 95 347 30 36.75 0
## 96 347 40 36.71 0
## 97 347 50 36.73 0
## 98 347 100 36.75 0
## 99 347 110 36.72 0
## 100 347 120 36.76 0
## 101 347 130 36.70 0
## 102 347 140 36.82 0
## 103 347 150 36.88 0
## 104 347 200 36.94 0
## 105 347 210 36.79 0
## 106 347 220 36.78 0
## 107 347 230 36.80 0
## 108 347 240 36.82 0
## 109 347 250 36.84 0
## 110 347 300 36.86 0
## 111 347 310 36.88 0
## 112 347 320 36.93 0
## 113 347 330 36.97 0
## 114 347 340 37.15 1
Supónga que se desea extraer los datos de temperatura (temp) para los días (day) que son exactamente iguales a 346.
attach(beaver1)
names(beaver1)
## [1] "day" "time" "temp" "activ"
Temperaturas <- temp[day==346]
Temperaturas
## [1] 36.33 36.34 36.35 36.42 36.55 36.69 36.71 36.75 36.81 36.88 36.89
## [12] 36.91 36.85 36.89 36.89 36.67 36.50 36.74 36.77 36.76 36.78 36.82
## [23] 36.89 36.99 36.92 36.99 36.89 36.94 36.92 36.97 36.91 36.79 36.77
## [34] 36.69 36.62 36.54 36.55 36.67 36.69 36.62 36.64 36.59 36.65 36.75
## [45] 36.80 36.81 36.87 36.87 36.89 36.94 36.98 36.95 37.00 37.07 37.05
## [56] 37.00 36.95 37.00 36.94 36.88 36.93 36.98 36.97 36.85 36.92 36.99
## [67] 37.01 37.10 37.09 37.02 36.96 36.84 36.87 36.85 36.85 36.87 36.89
## [78] 36.86 36.91 37.53 37.23 37.20 37.25 37.20 37.21 37.24 37.10 37.20
## [89] 37.18 36.93 36.83
Se observan los valores extraidos que cumplen con el valor de 346 para el día. Ahora se desea contar los datos obtenidos, esto se hace con el comando length().
length(Temperaturas)
## [1] 91
Lo cual nos indica que corresponden a 91 observaciones.
Se desea crear una tabla que contenga los valores para todas las variables para el día 347.
Tabla_347 <- data.frame(Dia=day[day==347], Tiempo=time[day==347], Temperatura=temp[day==347], Actividad=activ[day==347])
Tabla_347
## Dia Tiempo Temperatura Actividad
## 1 347 0 36.93 0
## 2 347 10 36.83 0
## 3 347 20 36.80 0
## 4 347 30 36.75 0
## 5 347 40 36.71 0
## 6 347 50 36.73 0
## 7 347 100 36.75 0
## 8 347 110 36.72 0
## 9 347 120 36.76 0
## 10 347 130 36.70 0
## 11 347 140 36.82 0
## 12 347 150 36.88 0
## 13 347 200 36.94 0
## 14 347 210 36.79 0
## 15 347 220 36.78 0
## 16 347 230 36.80 0
## 17 347 240 36.82 0
## 18 347 250 36.84 0
## 19 347 300 36.86 0
## 20 347 310 36.88 0
## 21 347 320 36.93 0
## 22 347 330 36.97 0
## 23 347 340 37.15 1
Observe como a través del comando data.frame() se genera una tabla con los valores solicitados.
Los operadores lógicos son:
& : And
| : Or
Por lo que ahora se desea extraer los valores de las Temperaturas para el día 347 y que adicionalmente hayan tenido actividad (especificado como 1).
Temperaturas2 <-temp[day==347 & activ==1]
Temperaturas2
## [1] 37.15
Por lo que se obtiene que en el día 347 solamente se tuvo un día de actividad.
Supónga que ahora se desea conocer a que hora del día 347 se hizo la actividad.
Actividad2 <- time[day==347 & activ==1]
Actividad2
## [1] 340
Supónga que ahora se desea conocer las Temperaturas del día 347 o 348 que sean mayores o iguales a 36.80
temp[(day==346 | day==347) & temp >= 36.8 ]
## [1] 36.81 36.88 36.89 36.91 36.85 36.89 36.89 36.82 36.89 36.99 36.92
## [12] 36.99 36.89 36.94 36.92 36.97 36.91 36.80 36.81 36.87 36.87 36.89
## [23] 36.94 36.98 36.95 37.00 37.07 37.05 37.00 36.95 37.00 36.94 36.88
## [34] 36.93 36.98 36.97 36.85 36.92 36.99 37.01 37.10 37.09 37.02 36.96
## [45] 36.84 36.87 36.85 36.85 36.87 36.89 36.86 36.91 37.53 37.23 37.20
## [56] 37.25 37.20 37.21 37.24 37.10 37.20 37.18 36.93 36.83 36.93 36.83
## [67] 36.80 36.82 36.88 36.94 36.80 36.82 36.84 36.86 36.88 36.93 36.97
## [78] 37.15
En el caso anterior ya se usan ambos condicionales.