У lubridate вычитание возвращают только числовое значение - PullRequest
16 голосов
/ 22 сентября 2010

У меня есть одна переменная, называемая Started, которая является датой, когда люди были включены в исследование, и другая переменная, называемая dos1, которая является датой, когда субъекту в последний раз была сделана операция.Я хочу узнать, сколько месяцев прошло с момента их последней операции до дня зачисления.Я попытался:

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

Я ожидал, что это даст мне что-то вроде:

14, 18, 1, 26 

С каждым числом будет количество месяцев.

Вместо этого я получаю:

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.   

Как я могу получить только числовое значение месяцев?

Ответы [ 2 ]

29 голосов
/ 22 сентября 2010

Вместо этого вы можете попробовать использовать difftime, то есть:

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

Обратите внимание, что это даст вам объект класса difftime, если вам нужен числовой вектор, оберните as.numeric вокругЭто.Также обратите внимание, что вы не можете выбрать месяцы в качестве опции для единиц, но вы действительно должны придерживаться единицы времени, которая имеет фиксированную длину.

5 голосов
/ 22 сентября 2010

Это определенно ошибка в lubridate. Я сделал сообщение об ошибке и исправлю его для версии 0.1:

http://github.com/hadley/lubridate/issues#issue/75

Спасибо, что привлекли мое внимание.

...