润滑,计算年数,return NA
lubridate, calculate years, return NA
你好我在计算一些知道出生日期的对象的年龄时遇到问题,我正在使用 lubridate 包,示例:
> head(df$hs_dob1c)
[1] 2002-01-30 2004-12-29 2005-09-15 2002-12-20 2005-07-28 1995-08-28
首先我设置:
df$hs_dob1c <- as.Date(df$hs_dob1c, format='%y-%m-%d')
然后:
today <- as.Date(Sys.Date(), format="%y-%m-%d")
ref_date <- as.Date(df$hs_dob1c, format="%y-%m-%d")
问题出在我设置引用时,因为:
> head(df$hs_dob1c)
[1] NA NA NA NA NA NA
不确定您在哪里使用 lubridate
,但请尝试
df$hs_dob1c <- as.Date(df$hs_dob1c, format='%Y-%m-%d')
而不是
df$hs_dob1c <- as.Date(df$hs_dob1c, format='%y-%m-%d')
%y
表示一个 2 位数的年份,你有一个 4 位数的年份应该被称为 %Y
直到现在你还没有使用 lubridate
,但它也适用于基础 R:
hs_dob1c <- as.Date(
c("2002-01-30", "2004-12-29", "2005-09-15", "2002-12-20", "2005-07-28" ,"1995-08-28"),
format='%Y-%m-%d')
today <- as.Date(Sys.Date(), format="%Y-%m-%d")
difftime(today, hs_dob1c, units = "days")
# Time differences in days
# [1] 5269 4205 3945 4945 3994 7616
您必须将 format='%y-%m-%d'
更改为 format='%Y-%m-%d'
使用 lubridate
它将像这样工作:
library("lubridate")
hs_dob1c <- ymd(
c("2002-01-30", "2004-12-29", "2005-09-15", "2002-12-20", "2005-07-28" ,"1995-08-28"))
today <- ymd(Sys.Date())
difftime(today, hs_dob1c,units = "days")
# Time differences in days
# [1] 5269 4205 3945 4945 3994 7616
你好我在计算一些知道出生日期的对象的年龄时遇到问题,我正在使用 lubridate 包,示例:
> head(df$hs_dob1c)
[1] 2002-01-30 2004-12-29 2005-09-15 2002-12-20 2005-07-28 1995-08-28
首先我设置:
df$hs_dob1c <- as.Date(df$hs_dob1c, format='%y-%m-%d')
然后:
today <- as.Date(Sys.Date(), format="%y-%m-%d")
ref_date <- as.Date(df$hs_dob1c, format="%y-%m-%d")
问题出在我设置引用时,因为:
> head(df$hs_dob1c)
[1] NA NA NA NA NA NA
不确定您在哪里使用 lubridate
,但请尝试
df$hs_dob1c <- as.Date(df$hs_dob1c, format='%Y-%m-%d')
而不是
df$hs_dob1c <- as.Date(df$hs_dob1c, format='%y-%m-%d')
%y
表示一个 2 位数的年份,你有一个 4 位数的年份应该被称为 %Y
直到现在你还没有使用 lubridate
,但它也适用于基础 R:
hs_dob1c <- as.Date(
c("2002-01-30", "2004-12-29", "2005-09-15", "2002-12-20", "2005-07-28" ,"1995-08-28"),
format='%Y-%m-%d')
today <- as.Date(Sys.Date(), format="%Y-%m-%d")
difftime(today, hs_dob1c, units = "days")
# Time differences in days
# [1] 5269 4205 3945 4945 3994 7616
您必须将 format='%y-%m-%d'
更改为 format='%Y-%m-%d'
使用 lubridate
它将像这样工作:
library("lubridate")
hs_dob1c <- ymd(
c("2002-01-30", "2004-12-29", "2005-09-15", "2002-12-20", "2005-07-28" ,"1995-08-28"))
today <- ymd(Sys.Date())
difftime(today, hs_dob1c,units = "days")
# Time differences in days
# [1] 5269 4205 3945 4945 3994 7616