Hola a todos,
Escribo para preguntarles sobre cómo programar algo, que estoy segura es
algo bastante sencillo para muchos de Uds que tienen amplia experiencia
programando. Lo describo a continuación.
Tengo una base de datos (file = datos) de especies (de plantas) en donde
cada fila es un individuo de una especie con ciertos atributos (alrededor
de 1500 filas = individuos). Quería anexar en esta base una columna que me
indicara la forma de crecimiento de cada individuo de cada especie (si es
árbol, arbusto, etc), pues no lo puse desde el principio. Esta información
la tengo en otra base de datos (file = datos2), la cual tiene en cada fila
el nombre de la especie y su respectiva forma de vida (un listado de 135
especies). Mi idea fue hacer una rutina para que se leyera cada fila del
archivo datos, se comparara con el listado de datos2 y se hiciera una nueva
columna que tuviera las formas de vida de los 1500 individuos del archivo
datos.
Tardé 5 horas en escribir 5 líneas y como les comenté al final resultó,
pero no sé si es la forma más "elegante" o "sofisticada" de
hacerlo.
Agradezco sus opiniones.
file = datos
Ind Especie Atributo1 Atributo n 1 B … 2 C ... 3 B .. ... 4 A
... ... 5 C ... ... 6 D ,,, ,,, 7 D ... ... ,,,, 8 A .... 9 B
...
file = datos2
Especie FormaVida A árbol B árbol C arbusto D hierba
LF <- character ()
for (i in 1:dim(datos2)[1]){
Sp <- as.vector(datos2 [i,2])
Sp2 <- which ((datos[,4]) == Sp)
#print (Sp2)
if (length (Sp2) > 0) LF [i] <- (as.character(datos [(as.numeric(Sp2)),
5])) else LF [i] <- "NA"
}
----
*Angela Andrea Camargo Sanabria*
Estudiante Doctorado en Ciencias Biológicas
Laboratorio de Ecología de poblaciones y comunidades tropicales
Centro de Investigaciones en Ecosistemas (CIEco)
UNAM, campus Morelia
Antigua Carretera a Pátzcuaro # 8701
Col. Ex-Hacienda de San José de la Huerta, CP 58190
Morelia, Michoacán, México
Tel.: 443-3222706 ext. 42511
e-mail: aacamargo@cieco.unam.mx
skype: angela.camargo26
[[alternative HTML version deleted]]
Hola Angela, Podrias usar merge() para hacer lo que quieres. Saludos, Jorge.- Sent from my phone. Please excuse my brevity and misspelling. On Dec 14, 2012, at 4:37 PM, Angela Andrea Camargo Sanabria <angela.andrea.camargo en gmail.com> wrote:> Hola a todos, > > Escribo para preguntarles sobre cómo programar algo, que estoy segura es > algo bastante sencillo para muchos de Uds que tienen amplia experiencia > programando. Lo describo a continuación. > > Tengo una base de datos (file = datos) de especies (de plantas) en donde > cada fila es un individuo de una especie con ciertos atributos (alrededor > de 1500 filas = individuos). Quería anexar en esta base una columna que me > indicara la forma de crecimiento de cada individuo de cada especie (si es > árbol, arbusto, etc), pues no lo puse desde el principio. Esta información > la tengo en otra base de datos (file = datos2), la cual tiene en cada fila > el nombre de la especie y su respectiva forma de vida (un listado de 135 > especies). Mi idea fue hacer una rutina para que se leyera cada fila del > archivo datos, se comparara con el listado de datos2 y se hiciera una nueva > columna que tuviera las formas de vida de los 1500 individuos del archivo > datos. > > Tardé 5 horas en escribir 5 líneas y como les comenté al final resultó, > pero no sé si es la forma más "elegante" o "sofisticada" de hacerlo. > Agradezco sus opiniones. > > file = datos > Ind Especie Atributo1 Atributo n 1 B ? 2 C ... 3 B .. ... 4 A > ... ... 5 C ... ... 6 D ,,, ,,, 7 D ... ... ,,,, 8 A .... 9 B > ... > > file = datos2 > Especie FormaVida A árbol B árbol C arbusto D hierba > LF <- character () > for (i in 1:dim(datos2)[1]){ > Sp <- as.vector(datos2 [i,2]) > Sp2 <- which ((datos[,4]) == Sp) > #print (Sp2) > if (length (Sp2) > 0) LF [i] <- (as.character(datos [(as.numeric(Sp2)), > 5])) else LF [i] <- "NA" > } > > ---- > *Angela Andrea Camargo Sanabria* > Estudiante Doctorado en Ciencias Biológicas > Laboratorio de Ecología de poblaciones y comunidades tropicales > Centro de Investigaciones en Ecosistemas (CIEco) > UNAM, campus Morelia > Antigua Carretera a Pátzcuaro # 8701 > Col. Ex-Hacienda de San José de la Huerta, CP 58190 > Morelia, Michoacán, México > Tel.: 443-3222706 ext. 42511 > e-mail: aacamargo en cieco.unam.mx > skype: angela.camargo26 > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Gracias Jorge. ---- *Angela Andrea Camargo Sanabria* Estudiante Doctorado en Ciencias Biológicas Laboratorio de Ecología de poblaciones y comunidades tropicales Centro de Investigaciones en Ecosistemas (CIEco) UNAM, campus Morelia Antigua Carretera a Pátzcuaro # 8701 Col. Ex-Hacienda de San José de la Huerta, CP 58190 Morelia, Michoacán, México Tel.: 443-3222706 ext. 42511 e-mail: aacamargo@cieco.unam.mx skype: angela.camargo26 2012/12/13 Jorge I Velez <jorgeivanvelez@gmail.com>> Hola Angela, > Podrias usar merge() para hacer lo que quieres. > Saludos, > Jorge.- > > Sent from my phone. Please excuse my brevity and misspelling. > > On Dec 14, 2012, at 4:37 PM, Angela Andrea Camargo Sanabria > <angela.andrea.camargo@gmail.com> wrote: > > > Hola a todos, > > > > Escribo para preguntarles sobre cómo programar algo, que estoy segura es > > algo bastante sencillo para muchos de Uds que tienen amplia experiencia > > programando. Lo describo a continuación. > > > > Tengo una base de datos (file = datos) de especies (de plantas) en donde > > cada fila es un individuo de una especie con ciertos atributos (alrededor > > de 1500 filas = individuos). Quería anexar en esta base una columna que > me > > indicara la forma de crecimiento de cada individuo de cada especie (si es > > árbol, arbusto, etc), pues no lo puse desde el principio. Esta > información > > la tengo en otra base de datos (file = datos2), la cual tiene en cada > fila > > el nombre de la especie y su respectiva forma de vida (un listado de 135 > > especies). Mi idea fue hacer una rutina para que se leyera cada fila del > > archivo datos, se comparara con el listado de datos2 y se hiciera una > nueva > > columna que tuviera las formas de vida de los 1500 individuos del archivo > > datos. > > > > Tardé 5 horas en escribir 5 líneas y como les comenté al final resultó, > > pero no sé si es la forma más "elegante" o "sofisticada" de hacerlo. > > Agradezco sus opiniones. > > > > file = datos > > Ind Especie Atributo1 Atributo n 1 B … 2 C ... 3 B .. ... 4 A > > ... ... 5 C ... ... 6 D ,,, ,,, 7 D ... ... ,,,, 8 A .... > 9 B > > ... > > > > file = datos2 > > Especie FormaVida A árbol B árbol C arbusto D hierba > > LF <- character () > > for (i in 1:dim(datos2)[1]){ > > Sp <- as.vector(datos2 [i,2]) > > Sp2 <- which ((datos[,4]) == Sp) > > #print (Sp2) > > if (length (Sp2) > 0) LF [i] <- (as.character(datos [(as.numeric(Sp2)), > > 5])) else LF [i] <- "NA" > > } > > > > ---- > > *Angela Andrea Camargo Sanabria* > > Estudiante Doctorado en Ciencias Biológicas > > Laboratorio de Ecología de poblaciones y comunidades tropicales > > Centro de Investigaciones en Ecosistemas (CIEco) > > UNAM, campus Morelia > > Antigua Carretera a Pátzcuaro # 8701 > > Col. Ex-Hacienda de San José de la Huerta, CP 58190 > > Morelia, Michoacán, México > > Tel.: 443-3222706 ext. 42511 > > e-mail: aacamargo@cieco.unam.mx > > skype: angela.camargo26 > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]