[R-es] programación básica
Javier Marcuzzi
javiermarcuzzi en me.com
Mar Nov 3 15:20:18 CET 2009
Necesito algo de programación básica para resolver un problema, un
inconveniente es que intente "if", cuándo 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 están 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 día se realice el control, pero los controles son una
vez al mes, por lo cuál es mucha casualidad. En los controles se
realizan mediciones, por lo cuál hay una fecha y un número asociado a
esa fecha.
La formula matemática 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 números se multiplican por la
diferencia de días 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 rápidamente el inconveniente, cada animal tiene
inicio, diferente números de fechas de control con sus números, y
casi todos fecha de final, porque hay algunos que no llegaron al
final, entonces tienen inicio, dos controles y cuándo 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 número que resume
todo lo producido entre la fecha inicial y final (o hasta donde se
midió), por cada animal.
Más información sobre la lista de distribución R-help-es