22

我有一个变量称为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.   

我怎样才能得到月份的数值?

4

3 回答 3

36

您可以尝试difftime改用,即:

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

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

于 2010-09-22T09:03:41.850 回答
7

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

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

感谢您引起我的注意。

于 2010-09-22T19:15:26.213 回答
5

R - lubridate - Convert Period 为数字计数月份中所述,此处预期的 lubridate 方法将是time_length

time_length(syrrupan$Started-syrrupan$dos1, unit="days")
于 2020-07-14T13:33:06.397 回答