【问题标题】:Aggregate Dates to produce unique periods聚合日期以产生独特的时期
【发布时间】:2017-09-17 09:31:49
【问题描述】:

我希望能够将在一段时间内收集的调查数据汇总到一个独特的时期。例如,对于前三个日期(2015-03-17、2015-03-23、2015-03-26),我想合并生成“2015 年 3 月”期间。然后,我将使用这些组合日期来生成显示该期间“Average.Counts”的箱线图。

总之,我想制作 4 个独特的时期:

  • 3 月 15 日(前 3 个日期如下表所示)
  • 9 月 15 日(日期为 4,5,如下表所示)
  • 2016 年 3 月(日期 6-15,如下表所示)
  • 2016 年 9 月(日期为 16-23,如下表所示)

这里是数据集的标题。

head(Survival.Pre.Harvest)
Bay.Unique       Date Average.Count Total.Predators Time Previous.Average.Count
2          1 2015-03-17         346.9               2    0                     NA
3          1 2015-09-14         326.6               8  181                  346.9
4          1 2016-02-29         322.6               3  349                  326.6
7          2 2015-03-17         326.4               2    0                     NA
8          2 2015-09-14         288.8               4  181                  326.4
9          2 2016-02-29         271.4               6  349                  288.8

这些是数据集中的唯一日期。

表(Survival.Pre.Harvest$Date)

2015-03-17 2015-03-23 2015-03-26 2015-09-14 2015-09-15 2016-02-24 2016-02-25 2016-02-26 2016-02-29 
     9          3          1          9          3          4          6          6          5 
2016-03-01 2016-03-02 2016-03-03 2016-03-04 2016-03-22 2016-03-23 2016-09-12 2016-09-13 2016-09-14 
     3          6          3          6          6          2          6          6          4 
2016-09-20 2016-09-22 2016-10-18 2016-10-19 2016-10-20 
     7         10          4          3         14 

提前致谢!

dput(head(Survival.Pre.Harvest))
structure(list(Bay.Unique = c(1, 1, 1, 2, 2, 2), Date = structure(c(16511, 
16692, 16860, 16511, 16692, 16860), class = "Date"), Average.Count = c(346.9, 
326.6, 322.6, 326.4, 288.8, 271.4), Total.Predators = c(2L, 8L, 
3L, 2L, 4L, 6L), Time = c(0, 181, 349, 0, 181, 349), Previous.Average.Count =    c(NA, 
346.9, 326.6, NA, 326.4, 288.8)), .Names = c("Bay.Unique", "Date", 
"Average.Count", "Total.Predators", "Time", "Previous.Average.Count"
), row.names = c(2L, 3L, 4L, 7L, 8L, 9L), class = "data.frame")

【问题讨论】:

标签: r aggregate


【解决方案1】:

这应该可行:

library(lubridate)
library(ggplot2)
Survival.Pre.Harvest$Date <- ymd(Survival.Pre.Harvest$Date)
bks = ymd("2015-01-01", "2015-08-31", "2016-01-01", "2016-08-31", "2017-01-01")
lbs <- c("Mar2015", "Sep2015", "Mar2016", "Sep2016")
Survival.Pre.Harvest$yearmonth <- cut.Date(Survival.Pre.Harvest$Date, breaks = bks, labels = lbs)
ggplot(Survival.Pre.Harvest, aes(x=yearmonth, y=Average.Count)) + geom_boxplot()

【讨论】:

  • 您好,埃德,感谢您提供的信息。运行第二行代码时确实出现错误: df$yearmonth
  • 每个日期也有多个观察值(23 个不同日期总共有 126 个),所以箱线图没问题。我已经为独特的日期制作了它们,但最好将它们组合成句点。谢谢
  • 能否编辑您的问题,使用 dput() 添加数据?
  • 嗨@ed_sans,我认为这实际上与下载 lubridate 包有关。重新运行后,我收到以下错误: x11() 中的错误:无法加载 X11 模块另外:警告消息:运行命令 ''otool' -L '/Library/Frameworks/R.framework/Resources/modules/ R_X11.so'' 的状态为 1 xcrun:错误:无效的活动开发者路径 (/Library/Developer/CommandLineTools),缺少 xcrun:/Library/Developer/CommandLineTools/usr/bin/xcrun
  • @Greeny,不要使用 x11()。它只是在 Windows 中打开一个新的图形设备。我编辑了答案
猜你喜欢
  • 2021-07-28
  • 1970-01-01
  • 2021-09-28
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
相关资源
最近更新 更多