gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:22:57 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com