我希望聚合时间序列数据以获取每周数据,但这样做时间变量的类变为"字符"而不是"日期"因此失去了作为约会的任何酷炫功能。
这非常烦人,尤其是当我需要绘制数据并使用中断和标签进行播放时。
以下是我面临的一个简短例子
# Storing some random daily data
require(plyr)
require(dplyr)
df = data.frame(date = seq.Date(from = as.Date('2013-01-01'),
to = as.Date('2014-12-31'),
by = 'day'),
data = rnorm(365*2))
将数据汇总到一些每周数据
wdf = df %>%
mutate(week = strftime(df$date, format = '%Y-%U')) %>%
group_by(week) %>%
summarise(wdata = max(data))
不幸的是,现在变量周不属于"日期"。是否有可能保持格式为%Y-%V的对象的类日期?
提前致谢!
EB
答案 0 :(得分:1)
使用awesome lubridate包。它有一个floor_date
函数,可以根据几个时间单位(包括你想要的几周)向下舍入日期。
library(lubridate)
wdf = df %>%
mutate(week = floor_date(date, unit = 'week')) %>%
group_by(week) %>%
summarise(wdata = max(data))