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]]