[R-es] programación básica

Carlos J. Gil Bellosta cgb en datanalytics.com
Mar Nov 3 23:36:49 CET 2009


Hola, ¿qué tal?

Creo entender el problema y, aunque no dé peces, voy a ver si puedo
ayudarte a construir una caña de pescar.

En primer lugar, usando by() adecuadamente, puedes reducir el problema
al caso en el que sólo tienes un animal. Deberías, por tanto, crear una
función que sepa "procesar un animal".

Dentro de dicha función tendrás que realizar ciertas manipulaciones de
datos: ordenar temporalmente las observaciones, etc. Podrías crear dos
vectores: uno de fechas y otro de pesos. Una manipulación adecuada de
los mismos te permitiría obtener tu resultado mediante un producto de
uno de los vectores por el otro.

El como obtener los vectores es más prolijo que complicado, pero sort,
diff y, por supuesto, [], son tus amigos.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com


On Tue, 2009-11-03 at 22:43 +0100, Fernando Fernández wrote:
> Hola Javier,
> 
> Coincido con lo confuso de tu email, pero me da que lo que intentas hacer es
> una comparacin elemento a elemento. Si es as yo buscara en los manuales
> bsicos como subindicar una matriz (recuerda que puedes tratar el data.frame
> bien como lista o bien como una matriz), otra posible forma es que definas
> una funcin que apliques a cada fila o columna y luego utilices las
> funciones vectoriales de R, por ejemplo APPLY. De todas formas conviene que
> intentes describir un poco mejor el problema. Un saludo.
> 
> Fernando Fernndez.
> 
> El 3 de noviembre de 2009 18:16, Jorge Ivan Velez
> <jorgeivanvelez en gmail.com>escribi:
> 
> > Buenas tardes Javier,
> >
> > La descripcin que ofreces es bastante confusa. Quizs un data.frame de lo
> > que tienes y de lo que te gustara tener podra ayudarnos a ayudarte.
> >
> > Saludos,
> >       Jorge Ivan Velez
> >
> >
> > 2009/11/3 Javier Marcuzzi <>
> >
> > > Necesito algo de programacin bsica para resolver un problema, un
> > > inconveniente es que intente "if", cundo se lo aplico digamos a x <- 5
> > no
> > > hay drama, pero si es a leche$litros me dice que solo se toma el primer
> > > elemento. Como pueden ver estoy re perdido.
> > >
> > > Mi problema: los datos estn en un data.frame como el siguiente
> > >
> > >  animal     inicio        fin    control idlactancias Cle_KilosOrdenie1
> > >   DL
> > > 1    1482 2006-08-08 2007-08-23 2007-02-23         4353              11.4
> > > 199 days
> > > 2    1482 2004-08-08 2005-05-01 2004-12-21         4351              11.0
> > > 135 days
> > > 3    1482 2004-08-08 2005-05-01 2005-04-26         4351              11.0
> > > 261 days
> > > 4    1482 2005-05-02 2006-08-07 2005-05-24         4352               7.8
> > >  22 days
> > > 5    1482 2006-08-08 2007-08-23 2007-06-25         4353               7.8
> > > 321 days
> > > 6    1482 2005-05-02 2006-08-07 2005-12-26         4352               7.4
> > > 238 days
> > > 7    1482 2006-08-08 2007-08-23 2007-01-24         4353              14.8
> > > 169 days
> > > 8    1482 2006-08-08 2007-08-23 2007-07-24         4353               7.4
> > > 350 days
> > > 9    1482 2004-08-08 2005-05-01 2004-11-23         4351              16.2
> > > 107 days
> > > 10   1482 2005-05-02 2006-08-07 2005-07-26         4352               9.0
> > >  85 days
> > > 11   1482 2006-08-08 2007-08-23 2006-11-20         4353              20.2
> > > 104 days
> > > 12   1482 2005-05-02 2006-08-07 2005-08-24         4352               9.4
> > > 114 days
> > > 13   1482 2006-08-08 2007-08-23 2007-04-26         4353              10.2
> > > 261 days
> > >
> > >
> > > Por cada animal tengo fecha de inicio, fecha de final, y entre estas
> > fechas
> > > de control. En la fecha de inicio y final no hay control, salvo que justo
> > > ese da se realice el control, pero los controles son una vez al mes, por
> > lo
> > > cul es mucha casualidad. En los controles se realizan mediciones, por lo
> > > cul hay una fecha y un nmero asociado a esa fecha.
> > >
> > > La formula matemtica es desde el inicio hasta la fecha del primer
> > control,
> > > entre las fechas de controles, y desde la fecha de ultimo control a la
> > fecha
> > > de fin. Los nmeros se multiplican por la diferencia de das entre las
> > > fechas, salvo los dos extremos.
> > >
> > > El problema radica en que los datos no son por ejemplo, inicio, control
> > 1,
> > > control 2, control 3, fin. Pudiendo hacer una hoja de calculo resolviendo
> > > rpidamente el inconveniente, cada animal tiene inicio, diferente nmeros
> > de
> > > fechas de control con sus nmeros,  y casi todos fecha de final, porque
> > hay
> > > algunos que no llegaron al final, entonces tienen inicio, dos controles y
> > > cundo pase el tiempo ...
> > >
> > > Lo que yo pen es buscar la menor fecha por animal, la mayor fecha por
> > > animal, de esta forma tengo la fecha de inicio y final, y luego las
> > fechas
> > > que se encuentren entre estas dos. Teniendo estas fechas puedo aplicar la
> > > formula que tiene las tres partes inicio, entre controles, final. Claro
> > que
> > > todo esto se debe realizar por todo el data.frame y para todos los
> > animales.
> > > El resultado final es un nmero que resume todo lo producido entre la
> > fecha
> > > inicial y final (o hasta donde se midi), por cada animal.
> > > _______________________________________________
> > > R-help-es mailing list
> > > R-help-es en r-project.org
> > > https://stat.ethz.ch/mailman/listinfo/r-help-es
> > >
> >
> >         [[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
> >
> >
> 
> 	[[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



Más información sobre la lista de distribución R-help-es