CAPÍTULO 4. ESTRUCTURAS DE CONTROL Y MANEJO DE DATOS 84
ra el año 1979 en el mes de enero, considera sólo dos elementos, a saber: 21.5 y
10.8, dando como resultado 16.15.
Nótese que, a diferencia de la función
by()
, para la función
aggregate()
se ha pasado como función de operación sobre el primer argumento la función
mean()
en vez de la función
rowMeans()
. Esto se debe a que
by()
actúa como
si operara con la salida de una clasificación hecha con
split()
, que es una
lista con cada resultado de la clasificación, mientras que
aggregate()
opera
directamente sobre las columnas del
data frame
. También, como se puede ver, el
resultado de
aggregate()
, convenientemente es una tabla de datos vertida en
un
data frame
, que es fácilmente manipulable como se ha mostrado antes.
Finalmente, en este tipo de funciones está la función
tapply()
, que efectúa
el mismo tipo de operaciones de clasificación y operación, pero actúa sobre un
vector y no sobre un
data frame
. Para ejemplificar el uso de esta función, se leerá
un archivo que contiene la misma información de precipitaciones que se ha
manejado en los ejemplos anteriores, pero organizada, o más bien, se debería
decir,
desorganizada
de una manera diferente.
dd
<-
read.csv
(
"Precipitaciones2.csv"
)
dd
## Est Anio Mes Prec
## 1 E3 1980 Mar 70.6
## 2 E1 1978 Ene 54.0
## 3 E1 1979 Feb 21.0
## 4 E3 1979 Mar 60.6
## 5 E1 1980 Mar 4.0
## 6 E3 1981 Mar 80.6
## 7 E1 1978 Feb 38.5
## 8 E3 1982 Ene 20.3
## 9 E1 1982 Feb NA
## 10 E2 1979 Mar 155.0
## 11 E1 1978 Mar NA
## 12 E2 1980 Ene 105.2
## 13 E1 1979 Mar 38.5
## 14 E2 1981 Mar 100.0
## 15 E1 1982 Ene 37.5
## 16 E3 1981 Ene 20.2
## 17 E2 1981 Feb 3.2
## 18 E3 1979 Ene 10.8
## 19 E2 1980 Feb 17.5
## 20 E3 1980 Feb NA
## 21 E2 1979 Ene NA
## 22 E1 1982 Mar 30.0
## 23 E1 1980 Ene 81.0
## 24 E3 1979 Feb 30.3
## 25 E3 1981 Feb 40.4