[R-es] programación básica

Gabriela Cendoya gcendoya en balcarce.inta.gov.ar
Mar Nov 3 17:02:56 CET 2009


Hola:
 la función if (?if.) tiene como primer argumento un vector lógico de 
longitud uno, si queres usar un argumento lógico de longitud mayor a uno 
entonces debes usar la función ifelse (?ifelse)
Gabriela
----- Original Message ----- 
From: "Javier Marcuzzi" <javiermarcuzzi en me.com>
To: <R-help-es en r-project.org>
Sent: Tuesday, November 03, 2009 11:20 AM
Subject: [R-es] programación básica


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.
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es 

___________________________________________________________________________

Aviso:
=====

El contenido del presente e-mail y sus posibles adjuntos pertenecen al INTA y pueden contener información confidencial. Si usted no es el destinatario original de este mensaje y por este medio pudo acceder a dicha información, por favor solicitamos contactar al remitente y eliminar el mensaje de inmediato. Se encuentra prohibida la divulgación, copia, distribución o cualquier otro uso de la información contenida en el presente e-mail por parte de personas distintas al destinatario. 


This e-mail contents and its possible attachments belong to INTA and may contain confidential information. If this message was not originally addressed to you, but you have accessed to such information by this means, please contact the sender and eliminate this message immediately. Circulation, copy, distribution, or any other use of the information contained in this e-mail is not allowed on part of those different from the addressee.


Antes de imprimir este mensaje, asegúrese de que sea necesario. Proteger el medio ambiente está también en su mano.



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