将数据分成R中的每周,每两周,每月和每季度数据

时间:2011-06-28 15:00:43

标签: r date

我有一个包含两列的数据框。日期,性别

我想将Date列更改为该观察的周开始。例如,如果Jun-28-2011是星期二,我想将其更改为Jun-27-2011。基本上我想重新标记日期字段,使得同一周内的两个数据点具有相同的日期。

我也希望能够每周一次,每月一次,特别是每季一次。

更新: 我们将其用作数据集。

datset <- data.frame(date = as.Date("2011-06-28")+c(1:100))

2 个答案:

答案 0 :(得分:9)

我最近刚刚学到的一个方法就是使用lubridate包:

library(lubridate)
datset <- data.frame(date = as.Date("2011-06-28")+c(1:100))
#Add 1, since floor_date appears to round down to Sundays
floor_date(datset$date,"week") + 1

我不确定如何进行双周分级,但每月和每季度都可以使用相应的base函数轻松处理:

quarters(datset$date)
months(datset$date)

编辑:有趣的是,来自floor_date的{​​{1}}似乎无法向下舍入到最接近的四分之一,但lubridate中的同名函数却没有。

答案 1 :(得分:6)

看看?strftime。特别是,以下格式:

  

%b:缩写的月份名称   当前的语言环境。 (也匹配完整   输入名称。)

     

%B:完整的月份名称   在当前的区域设置中。 (也是匹配   输入上的缩写名称。)

     

%m:月份为十进制数字(01-12)。

     

%W:一年中的一周作为十进制数   (00-53)使用星期一作为第一天   一周(通常是第一个   一年中的星期一作为第1周的第1天   1)。英国会议。

例如:

> strftime("2011-07-28","Month: %B, Week: %W")
[1] "Month: July, Week: 30"

> paste("Quarter:",ceiling(as.integer(strftime("2011-07-28","%m"))/3))
[1] "Quarter: 3"