以下是一些随机数据:
library(dplyr)
library(tidyr)
channels <- c("Facebook", "Youtube", "SEM", "Organic", "Direct", "Email")
mts <- seq(from = last_month %m+% months(-23), to = last_month, by = "1 month") %>% as.Date()
dimvars <- expand.grid(Month = mts, Channel = channels)
rws <- nrow(dimvars)
Sessions <- round(rnorm(rws, 5000),0)
dataset <- cbind(dimvars, Sessions)
以下是使用此随机数据的表格:
sessionsTable <- dataset %>%
mutate(Month = format(Month, "%b-%Y")) %>%
gather(Key, Value, -Channel, -Month) %>%
spread(Month, Value) %>%
select(-Key) %>%
mutate_at(vars(-Channel), funs(. %>% round(0) %>% scales::comma()))
这就是它的样子:
> sessionsTable
Channel Apr-2016 Apr-2017 Aug-2015 Aug-2016 Dec-2015 Dec-2016 Feb-2016 Feb-2017 Jan-2016 Jan-2017 Jul-2015 Jul-2016 Jun-2015 Jun-2016
1 Facebook 14,852 7,604 8,841 16,429 20,720 21,527 10,960 13,824 14,394 19,163 1,047 19,209 2,198 18,655
2 Youtube 11,566 12,452 3,410 15,940 67 3,197 3,068 20,082 1,408 14,042 7,599 17,469 834 17,779
3 SEM 23,606 28,385 14,868 22,406 20,225 15,713 20,064 20,589 27,807 15,978 13,601 24,072 14,018 26,584
4 Organic 12,796 40,916 14,882 22,058 13,388 33,316 12,723 37,252 12,694 36,058 18,322 16,574 21,868 14,915
5 Direct 36,057 19,386 55,336 27,534 46,702 24,804 40,207 26,838 44,965 26,310 56,514 30,411 48,851 25,816
6 Email 15,966 4,768 7,663 6,051 13,520 17,650 9,100 13,939 13,909 10,430 10,116 16,317 14,854 18,430
Mar-2016 Mar-2017 May-2016 May-2017 Nov-2015 Nov-2016 Oct-2015 Oct-2016 Sep-2015 Sep-2016
1 8,732 12,734 16,651 3,959 18,415 18,020 9,840 27,853 9,193 25,364
2 7,458 14,466 15,009 10,118 2,065 9,524 8,334 10,564 2,643 14,037
3 22,987 30,840 24,686 16,839 21,354 13,472 14,511 11,954 14,725 17,313
4 14,649 34,112 16,018 37,914 12,482 28,349 18,586 22,605 20,009 24,234
5 39,981 23,635 27,717 14,265 47,936 22,207 46,651 22,485 50,203 30,574
6 8,743 12,628 18,224 2,806 12,343 8,104 15,602 4,405 6,383 11,708
问题在于它不是按数据趋势而是按月按字母顺序排列。 2016年4月,2017年4月。我想要的是2016年4月,2016年5月,2016年6月,等等。
如果我遗漏这一行mutate(Month = format(Month, "%b-%Y")) %>%
按照我想要的方式进行排序,然后我的月份列显示完整日期,例如2015-06-01和2015-07-01等。
如何按照我的首选格式按月订购趋势表格,例如&#34; 2016年4月&#34;,&#34; 2016年5月&#34;,&#34; 2016年6月&#34;等?
答案 0 :(得分:1)
如果您希望矢量具有漂亮的标签和排序,则可以使用因子。具体而言,您创建一个有序因子,其值为格式化月份,其级别为正确顺序的唯一格式化月份。
sessionsTable <- dataset %>%
mutate(Month = ordered(
format(Month, "%b-%Y"),
levels = format(sort(unique(Month)), "%b-%Y")
)) %>%
gather(Key, Value, -Channel, -Month) %>%
spread(Month, Value) %>%
select(-Key) %>%
mutate_at(vars(-Channel), funs(. %>% round(0) %>% scales::comma()))