0
我有一個數據框,dates
,其中包含日期列表。我試圖製作一個列表,dates$t2
,分成幾周。 (即每個連續一週內的日期有多少)。如何將日期列表分爲幾周,並繪製每週的計數直方圖
我希望每個分箱周都有一個格式爲「例如」的標籤。 11月11日,11月,11月,...,範圍限制在列表中的「minimimum」和「maximum」(最早和最晚)日期。
到目前爲止,我已經創建了日期的名單我想斌,data$t2
等一系列列的數據幀,我需要創建我的X標籤(我假設!):
library(lubridate)
dates$t1 <- c("24/07/2015", "12/08/2015", "10/08/2015", "05/09/2015", "20/09/2015",
"23/09/2015", "07/09/2015", "04/11/2015", "03/11/2015", "14/10/2015",
"08/10/2015", "14/09/2015", "02/10/2015", "28/09/2015", "23/10/2015",
"02/11/2015", "28/11/2015", "06/12/2015", "10/12/2015", "08/12/2015",
"07/12/2015", "03/12/2015", "21/11/2015", "02/12/2015", "12/12/2015",
"28/12/2015", "13/01/2016", "14/01/2016", "03/01/2016", "24/01/2016"
)
dates$t1 <- dmy(dates$t1)
dates$t2 <- dates$t1 + years(1)
dates$day = day(dates$t2)
dates$week = isoweek(dates$t2)
dates$month = month(dates$t2, label = TRUE)
dates$year = year(dates$t2)
dates <- na.omit(dates)
到目前爲止,我認爲,這麼好。 Dataframe看起來像這樣:
> head(dates)
t1 t2 day week month year
1 2015-07-24 2016-07-24 24 29 Jul 2016
2 2015-08-12 2016-08-12 12 32 Aug 2016
3 2015-08-10 2016-08-10 10 32 Aug 2016
4 2015-09-05 2016-09-05 5 36 Sep 2016
5 2015-09-20 2016-09-20 20 38 Sep 2016
6 2015-09-23 2016-09-23 23 38 Sep 2016
> str(dates)
'data.frame': 30 obs. of 6 variables:
$ t1 : Date, format: "2015-07-24" "2015-08-12" "2015-08-10" "2015-09-05" ...
$ t2 : Date, format: "2016-07-24" "2016-08-12" "2016-08-10" "2016-09-05" ...
$ day : int 24 12 10 5 20 23 7 4 3 14 ...
$ week : int 29 32 32 36 38 38 36 44 44 41 ...
$ month: Ord.factor w/ 12 levels "Jan"<"Feb"<"Mar"<..: 7 8 8 9 9 9 9 11 11 10 ...
$ year : num 2016 2016 2016 2016 2016 ...
- attr(*, "na.action")=Class 'omit' Named int [1:18] 30 32 33 34 35 36 37 38 39 40 ...
.. ..- attr(*, "names")= chr [1:18] "30" "32" "33" "34" ...
但是,當涉及到分箱和繪圖時,我卡住了。我卡在這一點上:
ggplot(dates, aes(x = week)) +
geom_bar()
有沒有人能告訴我如何:
- 用了一天,一個月更換在x軸的週數(如01至11月)格式?
- 告訴ggplot那周的數字跨越兩個不同的年份,例如1-10屬於2017年初,而不是2016年初的當前顯示。
- 將x軸限制設置爲列表中最早和最晚日期的範圍,而不是全年。
我還是很新的R,任何幫助非常感謝,謝謝!
這很好,謝謝@HubertL!爲了完整起見(對於R的其他混淆民俗...),您可以在ggplot中添加以下行來旋轉x標籤,如果它們重疊且不可讀: '+ theme(axis.text.x = element_text(angle = 90))' – monkeytennis
已添加,thx @monkeytennis – HubertL