2010-09-22 5 views
7

Tengo una variable llamada Started que es la fecha en la que los sujetos humanos se inscribieron en un estudio y otra variable llamada dos1 que es la fecha en la que el sujeto tuvo cirugía por última vez. Quiero calcular cuántos meses han pasado desde su última cirugía hasta el día de la inscripción. Probé:Tener resta lubricante devolver solo un valor numérico

as.period(syrrupan$Started-syrrupan$dos1,units=c("month")) 

esperaba que esto me da algo así como:

14, 18, 1, 26 

Con cada número es el número de meses.

En vez me sale:

1 year, -4 months, -5 days and -1 hours 1 year, -5 months, -23 days and -1 hours 1 year, -7 months, 2 days and -1 hours 1 year, -8 months, -28 days and 1 hour 1 year, -7 months, -23 days and 1 hour. 

¿Cómo puedo obtener sólo el valor numérico de meses?

Respuesta

14

Usted podría tratar de usar difftime lugar, es decir:

difftime(syrrupan$Started,syrrupan$dos1,units="days") 

Tenga en cuenta que esto le dará un objeto de clase difftime, si quieres un vector numérico, envolver un as.numeric alrededor de ella. Tenga en cuenta también que no puede elegir meses como una opción para las unidades, pero en realidad debería quedarse con una unidad de tiempo que tiene una longitud fija.

+2

En ese caso, podría dividir el resultado anterior por 30.44. – James

+0

difftime es del paquete base. Como las columnas eran "Fecha", también pude ingresar syrrupan $ Started-syrrupan $ dos1, que creó un vector de clase "difftime" en días. Por cierto, la sintaxis de difftime no permite el signo menos, sino que debe ser solo una coma. Para obtener meses y tener solo un valor significativo después del decimal que utilicé en redondo (como .numérico (difftime (syrrupan $ Started, syrrupan $ dos1, units = "days"))/30.44,1). En lubridate pude hacer esta ronda (como.numérico (como.duración (syrrupan $ Started-syrrupan $ dos1))/60/60/24/30.44,1) que parece torpe. – Farrel

+0

Lo siento, sí, el signo menos entró sigilosamente cuando copié los nombres de las variables de la pregunta. Ya arreglé la respuesta. – James

Cuestiones relacionadas