有一个lubridate减法只返回一个数值

时间:2010-09-22 01:16:29

标签: r date package lubridate

我有一个名为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.   

如何才能获得月份的数值?

3 个答案:

答案 0 :(得分:25)

您可以尝试使用difftime,即:

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

请注意,这将为您提供类difftime的对象,如果您需要数字向量,请在其周围包裹as.numeric。另请注意,您不能选择月份作为单位的选项,但您应该坚持使用具有固定长度的时间单位。

答案 1 :(得分:5)

这绝对是lubridate的一个错误。我做了一个错误报告,并将修复它为版本0.1:

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

感谢您引起我的注意。

答案 2 :(得分:0)

R - lubridate - Convert Period into numeric counting months中所述,此处的润滑方法将为time_length

time_length(syrrupan$Started-syrrupan$dos1, unit="days")