[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