/
index-helpers.R
82 lines (72 loc) · 1.65 KB
/
index-helpers.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#' Index summaries
#'
#' These functions check if the index is regular (`index_regular()`), and
#' summarise the index variable (`index_summary()`). This can be useful
#' to check your index variables.
#'
#' @param .data data.frame or tsibble
#' @param index the proposed index variable
#' @param ... extra arguments
#' @name index_summary
#'
#' @return logical TRUE means it is regular, FALSE means not
#'
#' @examples
#' # a tsibble
#' index_regular(heights)
#'
#' # some data frames
#' index_regular(pisa, year)
#' index_regular(airquality, Month)
#'
#' # a tsibble
#' index_summary(heights)
#' # some data frames
#' index_summary(pisa, year)
#' index_summary(airquality, Month)
#' index_summary(airquality, Day)
#' @export
index_regular <- function(.data, ...){
UseMethod("index_regular")
}
#' @rdname index_summary
#' @export
index_regular.tbl_ts <- function(.data, ...){
.data %>%
dplyr::pull(tsibble::index(.)) %>%
unique() %>%
sort() %>%
diff() %>%
unvarying()
}
#' @rdname index_summary
#' @export
index_regular.data.frame <- function(.data, index, ...){
.data %>%
dplyr::pull( {{index }} ) %>%
unique() %>%
sort() %>%
diff() %>%
unvarying()
}
#' @rdname index_summary
#' @export
index_summary <- function(.data, ...){
UseMethod("index_summary")
}
#' @rdname index_summary
#' @export
index_summary.tbl_ts <- function(.data, ...){
.data %>%
dplyr::pull(tsibble::index(.)) %>%
unique() %>%
summary()
}
#' @rdname index_summary
#' @export
index_summary.data.frame <- function(.data, index, ...){
.data %>%
dplyr::pull( {{index}} ) %>%
unique() %>%
summary()
}