2017-02-23 75 views
0

我想在我的數據集中重新編碼我的時間變量。目前,我的數據集反映了12月份的所有數據,並且我想重新編碼日期,以便存在包含week1,week2,week3和week4的變量。重新編碼日期

我的日期格式爲

december$DATE <- as.Date(december$DATE, "%m/%d/%Y") 

這是我在重新編碼當前的嘗試,但都無濟於事:

december$week <- cut (december$DATE, 
         breaks = c(-Inf, 12/08/2016, 12/15/2016, 12/22/2016, Inf), 
         labels=c("W1", "W2", "W3", "W4")) 

重新編碼成連續分類的傳統方法是不適用這個案例。有什麼建議麼?

+3

您的問題不包含[可重現的示例](http://stackoverflow.com/q/5963269/4303162)。因此很難理解你的問題並給你一個合適的答案。請提供您的數據(例如使用'dput()')或使用R中的示例數據集之一。另外,添加將您的問題重現到您的文章所需的最小代碼。 – Stibu

+1

可能會嘗試確保您的休息時間是日期格式,例如'as.Date( 「2016年12月8日」)' –

回答

0

ISOWeek包允許您將Date對象轉換爲ISO 8601周。例如,

ISOweek::ISOweek('2016-12-08') 

產生

[1] "2015-W53" 
0

這可以做到這一點:

december$week <- cut (december$DATE, 
       breaks = as.Date(c("2016-12-01", "2016-12-08", "2016-12-15", "2016-12-22", "2016-12-31")), 
       labels=c("W1", "W2", "W3", "W4")) 
0

你可以考慮增加週數的一列基於日期如

require(plyr) 
december$week <- format(december$date, format="%U") 

使用?strptime看到%U給出了一年(00-53)的一週開始星期日。 %V從星期一開始等。