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

Mar*_*ark 7 r date

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

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

我也希望能够每周,每月,特别是按季度进行.

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

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

jor*_*ran 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
Run Code Online (Sandbox Code Playgroud)

我不确定如何进行双周分级,但每月和每季度都可以通过各自的base功能轻松处理:

quarters(datset$date)
months(datset$date)
Run Code Online (Sandbox Code Playgroud)

编辑:有趣的是,floor_datelubridate似乎没有能够向下舍入到最近的四分之一,但同名的功能在ggplot2做.


Jam*_*mes 6

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

%b:当前语言环境中的缩写月份名称.(在输入时也匹配全名.)

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

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

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

例如:

> 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"
Run Code Online (Sandbox Code Playgroud)