【发布时间】:2014-10-09 11:39:17
【问题描述】:
我正在尝试从多年的一组数据中制作每个事件发生次数的直方图(或其他图),但按月和日分组。基本上我想要从 3 月 1 日开始的一年长的 x 轴,显示每个日期出现的次数,并根据分类值对这些日期进行着色。以下是数据集中的前 20 个条目:
goose
Index DateLost DateLost1 Nested
1 2/5/1988 1988-02-05 N
2 5/20/1988 1988-05-20 N
3 1/31/1985 1985-01-31 N
4 9/6/1997 1997-09-06 Y
5 9/24/1996 1996-09-24 N
6 9/27/1996 1996-09-27 N
7 9/15/1997 1997-09-15 Y
8 1/18/1989 1989-01-18 Y
9 1/12/1985 1985-01-12 Y
10 2/12/1988 1988-02-12 N
11 1/12/1985 1985-01-12 Y
12 10/26/1986 1986-10-26 N
13 9/15/1988 1988-09-15 Y
14 12/30/1986 1986-12-30 N
15 1/19/1991 1991-01-19 N
16 1/7/1992 1992-01-07 N
17 10/9/1999 1999-10-09 N
18 10/20/1990 1990-10-20 N
19 10/25/2001 2001-10-25 N
20 9/23/1996 1996-09-23 Y
我尝试过使用 strftime、zoo 和 lubridate 进行分组,但是这些图无法识别时间顺序,也无法让我调整起始值。我尝试了许多使用 plot() 和 ggplot2() 的方法,但要么无法正确绘制分组数据,要么无法将数据分组。到目前为止,我最好的情节来自这段代码:
ggplot(goose, aes(x=DateLost1,fill=Nested))+
stat_bin(binwidth=100 ,position="identity") +
scale_x_date("Date")
这给了我一个很好的情节,但多年来,而不是一年。我还在这里使用了先前答案中的代码: Understanding dates and plotting a histogram with ggplot2 in R 但是在选择开始日期时遇到了麻烦。任何帮助将不胜感激。如果我能以更易于使用的格式提供示例数据,请告诉我。
【问题讨论】:
-
dput()可以很好地格式化数据以包含在问题中。此外,与其使用 lubridate,不如坚持使用 POSIXct 格式。然后,您可以将年、月或日作为单独的列。然后你可以使用paste0("2001-", month -", "day")之类的东西创建一个虚拟日期,并将其用作你的 x。