相关疑难解决方法(0)

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

我有一个变量叫做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)

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

r date package lubridate

16
推荐指数
3
解决办法
2万
查看次数

如何使用lubridate包计算两个日期向量之间的月数,其中一个向量具有NA值?

我已经阅读了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)

r

11
推荐指数
3
解决办法
2万
查看次数

标签 统计

r ×2

date ×1

lubridate ×1

package ×1