我有一个名为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.
如何才能获得月份的数值?
答案 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")