2016-07-04 98 views
-1

你好,我有一個問題,計算某一主題的認識誕生之日起年齡,我使用的lubridate包,樣品:lubridate,計算年,返回NA

> 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 

回答

0

不知道你在哪裏使用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位數字的年份應參考as %Y

+0

它的工作,謝謝,我試着在你的回答中加上一個+,但是看起來像我太noob,即使說謝謝 –

0

直到現在您還沒有使用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