r - 如何使用lubridate软件包计算两个日期向量之间的月份数(其中一个向量具有NA值)?

标签 r

我已经阅读了lubridate软件包手册,并向我的Stack Overflow查询了我的问题的各种排列,但是对我的特定问题没有答案。

我要做的是将事件发生时的月份数(以出生日期与某个特定事件日期之间的差值计算)。

这样,我使用sas7bdat包导入了SAS数据集,并使用以下代码将SAS日期变量(DOB和Event)转换为R对象:

df$DOB <- as.Date(df$DOB, origin="1960-01-01")
df$DOB1 <- ymd(df$DOB)


对于Event变量也是如此:

df$Event <- as.Date(df$Event, origin="1960-01-01")
df$Event1 <- ymd(df$Event)


但是,DOB有一些NA值。因此,对于以下我想用来计算年龄(以月为单位)的代码。

df$interval <- new_interval(df$DOB1,df$Event1)
df$Age1 <- df$interval %/% months(1)


我收到错误:


est [start + est *每个<结束]中的错误<-est [start + est *每个<结束] +:下标分配中不允许使用NA


我究竟做错了什么?我尝试过if / else函数,但可能使用不正确。

(注意:对于那里的SAS程序员,我试图产生与以下函数相同的结果:

IF DOB ne . THEN Tage=Floor(intck('month',DOB,Event)-(Day(Event)<Day(DOB)));

最佳答案

使用lubridate软件包的简单示例

library(lubridate)
date1='20160101'
date2='20160501'
x=interval(ymd(date1),ymd(date2))
x= x %/% months(1)
print(x)
# answer : 4


或以下相同:

x=as.period(x) %>% month()
print(x)
# answer : 4

关于r - 如何使用lubridate软件包计算两个日期向量之间的月份数(其中一个向量具有NA值)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25369817/

相关文章:

regex - 路径变量的子串

r - 在 R 中使用多个不同的 FUN 聚合多个变量

r - 在 macOS Sierra 10.12.6 和 R 版本 3.4.1 上安装 RGtk2

从 R 中的二进制 <8 位读取整数

r - 如何计算密度图的概率?

r - 从 lapply 或带有 print 语句的函数调用时 kable 出现意外行为

r - 在 Rcpp 中按列对数据框排序

r - 如何加入相似字符的数据集?

r - 按年将数据汇总为月度计数

r - 什么是方位角和纬度?