我有一个变量叫做Started人类受试者参加研究dos1的日期和另一个被称为受试者最后接受手术的日期.我想知道从他们上次手术到入学当天有多少个月.我试过了:
as.period(syrrupan$Started-syrrupan$dos1,units=c("month"))
Run Code Online (Sandbox Code Playgroud)
我希望这给我一些类似的东西:
14, 18, 1, 26
Run Code Online (Sandbox Code Playgroud)
每个数字是月数.
相反,我得到:
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.
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到几个月的数值?
我已经阅读了lubridate软件包手册并查询了Stack Overflow,并提出了我的问题的各种排列,但我没有回答我的具体问题.
我想要做的是计算事件发生时的月龄,作为出生日期和某个特定事件日期之间的差异.
因此,我使用sas7bdat包导入了SAS数据集,并使用以下代码将我的SAS日期变量(DOB和Event)转换为R对象:
df$DOB <- as.Date(df$DOB, origin="1960-01-01")
df$DOB1 <- ymd(df$DOB)
Run Code Online (Sandbox Code Playgroud)
和Event变量一样:
df$Event <- as.Date(df$Event, origin="1960-01-01")
df$Event1 <- ymd(df$Event)
Run Code Online (Sandbox Code Playgroud)
但是,DOB有一些NA值.因此,对于我想用于计算年龄(以月为单位)的以下代码.
df$interval <- new_interval(df$DOB1,df$Event1)
df$Age1 <- df$interval %/% months(1)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
est [start +\test*per <end] < - est [start +\test*per <end] +中的错误:下标作业中不允许使用NA
我究竟做错了什么?我尝试过if/else函数,但可能使用不当.
(注意:对于那里的SAS程序员,我试图产生与以下函数相同的结果:
IF DOB ne . THEN Tage=Floor(intck('month',DOB,Event)-(Day(Event)<Day(DOB)));
Run Code Online (Sandbox Code Playgroud)