Incorporación de registros

Vamos a considerar ahora la posibilidad de añadir a un data.frame nuevos registros de las mismas variables. En el apartado anterior hemos visto que la función merge() permitía incorporar casos nuevos cuando añadíamos variables a un data.frame. Sin embargo, en ese caso, los nuevos registros no presentaban valores para las variables previas. En el caso de que sí lo hicieran, los valores de los registros nuevos no se incorporarían a la variable del data.frame previo sino que la variable se duplicaría. Por lo tanto, para añadir registros a un data.frame utilizaremos otra función: rbind().

Supongamos que al dataframe enfe con el que trabajábamos antes queremos añadirle los casos contenidos en este otro llamado nuevo
Nombre Enero Febrero Marzo
1 Manuel 45 1 14
2 Aurora 10 2 32
3 Jorge 2 4 20
Si ejecutamos union<-rbind(enfe,nuevo), conseguiremos nuestro cometido. El resultado será:
Nombre Enero Febrero Marzo
1 José 20 10 45
2 María 10 20 13
3 Sara 30 40 32
4 Manuel 45 1 14
5 Aurora 10 2 32
6 Jorge 2 4 20
Hay que hacer notar que no es preciso que el orden de las variables en los dos data.frame sea el mismo, pero sí el nombre de las mismas. Por otro lado, no hay problema en unir data.frames en los que las variables sean de tipo numérico o de carácter, pero si alguna de ellas es un factor, de todas las clases contenidas en el data.frame que vamos a añadir, sólo las que estén presentes en el data.frame de destino serán reconocidas. Todas las demás serán ignoradas y transformadas en NA's con la consiguiente pérdida de información. Por lo tanto, si nuestros data.frames contienen factores, puede ser conveniente transformarlos en vectores (con la función as.vector()) antes de proceder a incorporar datos de uno a otro. Otra posibilidad sería almacenar las variables de tipo carácter como tales (sin transformarlas en factores) al leer ficheros externos. Para ello habría que añadir la opción as.is=T en la función read.table().

2007-02-12