2017-02-23 74 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从星期一开始等。