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