我有一个包含两列的数据框.日期,性别
我想将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)
我最近刚刚学到的一个方法就是使用这个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_date
从lubridate
似乎没有能够向下舍入到最近的四分之一,但同名的功能在ggplot2
做.
看看?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)