【问题标题】:R aggregate by %Y-%b as dateR按日期聚合%Y-%b
【发布时间】:2016-10-07 13:59:23
【问题描述】:

我有一个数据框 item_sold_time 和一个 item_sold_time$SaleDate "POSIXct" "POSIXt" 列,看起来像这样 2015-04-28 07:59:43

我想按年月份汇总

df2<-aggregate(list(Qty=item_sold_time$Qty), by=list(ISBN=item_sold_time$ISBN,DateYM=strftime(item_sold_time$SaleDate, format="%Y-%b")), FUN=sum)

strftime 的问题在于它将日期转换为字符,如果我尝试将其转换回日期,则会出现错误。

我尝试了所有日期格式的组合,我可以在 2 天的搜索中找到。该日期的最终目的地将用于此情节:

ggplot(df2, aes(x = DateYM, y=Qty))

请帮忙。谢谢

【问题讨论】:

  • 日期有年、月和日,而不仅仅是年和月。
  • 好的,所以没有办法把它作为日期。但是有没有一种方法可以仅按年、月进行汇总,并且仍然可以按日期进行排序(2013 年 6 月之前 2013 年 7 月之前 2014 年 3 月)?
  • zoo 支持实际的年月列,这很有用。
  • 谢谢@joran,我去看看。
  • Here 是使用zoo::as.yearmon() 将年月数据格式化为日期的示例。然后scale_x_yearmon 应该有助于ggplot2 中的绘图。

标签: r date ggplot2


【解决方案1】:

将每个日期设置为(例如)每月 15 日,然后可以按日期聚合并正常绘图。

as.Date(format(item_sold_time$SaleDate, "%Y-%m-15"))

【讨论】:

  • 它可以完成这项工作,但令人惊讶的是,这样的基本操作需要如此不直观的解决方案
猜你喜欢
  • 2011-05-07
  • 2020-07-01
  • 1970-01-01
  • 2017-10-07
  • 2011-07-31
  • 2018-09-04
  • 1970-01-01
  • 2016-04-07
  • 2018-04-25
相关资源
最近更新 更多