Introducción.

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.

Base de datos a utilizar

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.

Análisis.

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

Extracción de datos.

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.

Creación de una tabla.

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.

Condiciones lógicas.

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.