Hola Tengo una pregunta, ¿cuál es la forma más sencilla y practica para lo siguiente? Los datos, hay un data.frame donde se encuentra una identificación (id única, tipo documento nacional de identidad, pero se repite en el data.frame), el año, la fecha de medición, y la medición. No todas las identificaciones (id) tienen la misma cantidad de mediciones, ni en años ni en mediciones por año (fechas). Por tal motivo debo crear un data.frame con la identificación, el año, la fecha, y la cantidad de mediciones en el año (por ejemplo para el id 1, en el año 2009, tengo 5 fechas, por lo cual la cantidad de mediciones es del 1 al 5, para el id 1, en el año 2009 tengo cuatro fechas, por este motivo la cantidad de mediciones son del 1 al 4). Debería quedar de algo parecido a: id año añoN° testNo fecha medición A16 2009 1 1 2009-03-29 47 A16 2009 1 2 2009-04-26 75 A16 2010 2 1 2010-05-26 105 A16 2010 2 2 2010-06-28 138 A partir de algo como: id año añoN° fecha medición A16 2009 1 2009-03-29 47 A16 2009 1 2009-04-26 75 A16 2010 2 2010-05-26 105 A16 2010 2 2010-06-28 138 Desde ya muchas gracias [[alternative HTML version deleted]]
Hola Javier, una forma rápida, pero creo no tan pulcra, de hacerlo es utilizando las siguientes lineas para crear un nuevo campo con la información que necesitas en tu tabla de "datos": datos <- datos[order(datos$id,datos$año),] datos$testNo <- as.numeric((unlist(tapply(datos$id,paste(datos$id,datos$año),function(x){return(1:length(x))})))) Básicamente con la primera linea ordenas los "datos" en función a los campos que deseas que sean numerados (por id y año) y con la función tapply creas la numeración que necesitas solo que en una lista que contiene la información del id y el año "paste(datos$id,datos$año)", por lo que debes transformarla a un vector "unlist" y luego a numérica "as.numeric", este último paso se puede obviar. Con estas lineas entonces adicionas a tu tabla "datos" el campo "testNo". Saludos, JuanK Saavedra-Nievas Investigador IFOP CHILE El 5 de octubre de 2010 18:27, Javier Marcuzzi < javier.ruben.marcuzzi@gmail.com> escribió:> Hola > > > > Tengo una pregunta, ¿cuál es la forma más sencilla y practica para lo > siguiente? > > > > Los datos, hay un data.frame donde se encuentra una identificación (id > única, tipo documento nacional de identidad, pero se repite en el > data.frame), el año, la fecha de medición, y la medición. > > > > No todas las identificaciones (id) tienen la misma cantidad de mediciones, > ni en años ni en mediciones por año (fechas). > > Por tal motivo debo crear un data.frame con la identificación, el año, la > fecha, y la cantidad de mediciones en el año (por ejemplo para el id 1, en > el año 2009, tengo 5 fechas, por lo cual la cantidad de mediciones es del 1 > al 5, para el id 1, en el año 2009 tengo cuatro fechas, por este motivo la > cantidad de mediciones son del 1 al 4). > > > > Debería quedar de algo parecido a: > > > > id año añoN° testNo fecha medición > > A16 2009 1 1 2009-03-29 47 > > A16 2009 1 2 2009-04-26 75 > > A16 2010 2 1 2010-05-26 105 > > A16 2010 2 2 2010-06-28 138 > > > > A partir de algo como: > > id año añoN° fecha > medición > > A16 2009 1 2009-03-29 47 > > A16 2009 1 2009-04-26 75 > > A16 2010 2 2010-05-26 105 > > A16 2010 2 2010-06-28 138 > > > > Desde ya muchas gracias > > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Juan Carlos Saavedra Nievas [[alternative HTML version deleted]]
Hola, ¿qué tal? Creo que quieres algo parecido a esto: do.call( rbind, by( iris, iris$Species, function( x ) cbind( x, 1:nrow(x) ) ) ) Por supuesto, quieres partir tu df por más de una variable (yo sólo uso una) y puede que tengas que tener cuidado cuando x tenga una sola fila (si pudiera ser el caso). Un saludo, Carlos J. Gil Bellosta On 10/06/2010 12:27 AM, Javier Marcuzzi wrote:> Hola > > > > Tengo una pregunta, ¿cuál es la forma más sencilla y practica para lo > siguiente? > > > > Los datos, hay un data.frame donde se encuentra una identificación (id > única, tipo documento nacional de identidad, pero se repite en el > data.frame), el año, la fecha de medición, y la medición. > > > > No todas las identificaciones (id) tienen la misma cantidad de mediciones, > ni en años ni en mediciones por año (fechas). > > Por tal motivo debo crear un data.frame con la identificación, el año, la > fecha, y la cantidad de mediciones en el año (por ejemplo para el id 1, en > el año 2009, tengo 5 fechas, por lo cual la cantidad de mediciones es del 1 > al 5, para el id 1, en el año 2009 tengo cuatro fechas, por este motivo la > cantidad de mediciones son del 1 al 4). > > > > Debería quedar de algo parecido a: > > > > id año añoN° testNo fecha medición > > A16 2009 1 1 2009-03-29 47 > > A16 2009 1 2 2009-04-26 75 > > A16 2010 2 1 2010-05-26 105 > > A16 2010 2 2 2010-06-28 138 > > > > A partir de algo como: > > id año añoN° fecha > medición > > A16 2009 1 2009-03-29 47 > > A16 2009 1 2009-04-26 75 > > A16 2010 2 2010-05-26 105 > > A16 2010 2 2010-06-28 138 > > > > Desde ya muchas gracias > > > [[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
Buenas noches javier, Una manera es utilizando la funcion cast() en reshape. En la ayuda hay varios ejemplos que puedes consultar via # install..packages(''reshape'') # desactivar si no lo tienes require(reshape) ?cast Feliz noche, Jorge Ivan Velez 2010/10/5 Javier Marcuzzi <>> Hola > > > > Tengo una pregunta, ¿cuál es la forma más sencilla y practica para lo > siguiente? > > > > Los datos, hay un data.frame donde se encuentra una identificación (id > única, tipo documento nacional de identidad, pero se repite en el > data.frame), el año, la fecha de medición, y la medición. > > > > No todas las identificaciones (id) tienen la misma cantidad de mediciones, > ni en años ni en mediciones por año (fechas). > > Por tal motivo debo crear un data.frame con la identificación, el año, la > fecha, y la cantidad de mediciones en el año (por ejemplo para el id 1, en > el año 2009, tengo 5 fechas, por lo cual la cantidad de mediciones es del 1 > al 5, para el id 1, en el año 2009 tengo cuatro fechas, por este motivo la > cantidad de mediciones son del 1 al 4). > > > > Debería quedar de algo parecido a: > > > > id año añoN° testNo fecha medición > > A16 2009 1 1 2009-03-29 47 > > A16 2009 1 2 2009-04-26 75 > > A16 2010 2 1 2010-05-26 105 > > A16 2010 2 2 2010-06-28 138 > > > > A partir de algo como: > > id año añoN° fecha > medición > > A16 2009 1 2009-03-29 47 > > A16 2009 1 2009-04-26 75 > > A16 2010 2 2010-05-26 105 > > A16 2010 2 2010-06-28 138 > > > > Desde ya muchas gracias > > > [[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]]