difference()
giving extra NA values when the time series is shorter than the lag length. (#310, @mitchelloharawild)vec_ptype2()
for yearweek
and yearquarter
for non-default week start. (#299)count_gaps()
warning message due to dplyr deprecation in favour of reframe()
. (#295).full
in *_gaps()
when inputs like T
, F
are valid. (#275)index2
in build_tsibble()
when a column name contains "index". (#284)time()
methods (renamed to time_ts()
) to avoid contaminating time()
in stats::window()
. (#277)make_year*()
to easily supply time components.stats::start()
and stats::end()
for the .full
argument in *_gaps()
, when *_gaps()
are used in other packages. (#269)rbind()
and cbind()
for tsibble, and suggest to use bind_rows()
and bind_cols()
instead. (#256)filter_in()
for yearweek
class with different week starts of than the default. (#261)as.ts.tbl_ts()
to better handle a tsibble of multiple key variables but single value. (#258).start
and .end
to *_gaps()
for custom starting and ending time. (#259)holiday_aus()
for Boxing Day. If falling on Sat/Sun, the holiday should be forwarded to 2 days. (#251)count()
and tally()
S3 methods for tsibble to behave like tibble input, and hence add_count()
and add_tally()
. (#232)yearmonth.character()
when inputs are all numbers without delimiter. (#264)NA
is accepted in year*()
, instead of errors before.yearmonth()
. (#250, @mitchelloharawild)yearmonth()
underlying data for character inputs. (#226)as_tsibble()
. (#229)by
is missing in year*()
. (#228)intersect()
, union()
, and setdiff()
) for year*
class. (#235, @wkdavis)full_join()
that produces an output with wrong temporal order. (#247)yearmonth()
supported more character formats. (#142)summarise_all()
, and made dplyr::across()
compatible with summarise.tbl_ts()
.grouped_ts[0L, ]
. (#194, @TylerGrantSmith)new_data()
for the yearweek
class. (#199)lubridate::Period
, since Period
can be ordered now. (#42)as.period()
and as.duration()
for interval class. (#206)yearweek()
gained a new argument week_start
to specify the day on which week starts based on ISO 8601 standard. (#205)yearquarter()
gained a new argument fiscal_start
to specify the starting month of a fiscal year. (#174)index_by()
+ summarise()
with grouped factors. (#197)select()
when removing redundant key. (#196)new_data.grouped_ts()
to inform "grouping structure is ignored". (#193)vec_slice()
updates tsibble data attributes.This release uses the vctrs package internally in {tsibble}.
new_interval()
uses a new interface to create the interval and supports custom interval. Old tsibble objects will receive an error for "a corrupt tsibble"..full
argument in *_gaps
supports two more options, start()
and end()
, for padding NA
to either starting or ending time. (#147)n
in new_data()
and append_row()
supports negative integer, appending past observations to the data. (#186)scale_[x/y/colour/size/alpha/fill]_year*()
for custom ggplot2 scales.pivot_longer()
and pivot_wider()
supporting methods for tsibble.bind_rows()
and bind_cols()
are now possible for tsibble with dplyr v1.0.0.select()
a tsibble now keeps both index and key by default. (#155)tidyr::drop_na()
support for tsibble. (#173)as.ts.tbl_ts()
for ignoring implicit missings. (#160)units_since()
in favour of vec_cast()
.is.tsibble()
.as.tsibble()
.This is a maintenance release due to tidyselect
v1.0.0 changes.
This is a maintenance release for CRAN fixes.
This is a maintenance release due to the changes in the upstream package.
Suggests
.is.tsibble()
.has_gaps()
& count_gaps()
gained a new argument .name
for naming new columns.new_data()
/append_row()
.as.ts.tbl_ts()
for converting tsibble to ts
.POSIXlt
as index.filter()
, slice()
, and [.tbl_ts
.slide()
, are slided into the "questioning" lifecycle, in favour of the slide package. (#143)index_by()
supports lambda expression (#91).gather
in as_tsibble.mts()
in favour of pivot_longer
.yearweek()
handles characters containing keywords "W"/"Wk"/"Week", for example yearweek("2019 W03")
.This is a patch release.
as.ts.tbl_ts()
for handling a tsibble of one row (#124).nest.tbl_ts()
for naming (#123).as_tsibble.ts()
(#128).index_by(.data, <empty>)
by default groups the index variable rather than previously ungroup()
.unnest_tsibble()
to minimise the impact from the upcoming API changes in tidyr::unnest()
.index_by()
allows for grouping index variable; and group_by()
will throw out an error for grouping index.semi_join.tbl_ts()
and anti_join.tbl_ts()
without suffix (#122).as.tsibble()
in favour of as_tsibble()
.fill_na()
in favour of fill_gaps()
.pull_interval()
in favour of interval_pull()
.regular
integrated to interval
, (2) attribute ordered
integrated to index
. A previously stored tsibble object may receive a warning "corrupt tsibble object".library(tidyverse)
in front.id()
for creating key for the consistence of tidy selectors, and will be defunct as of v0.9.0.pull_interval()
in favour of interval_pull()
.as.tsibble()
in favour of as_tsibble()
. The warning is displayed once per session.gather = TRUE
in as_tsibble.ts()
in favour of pivot_longer = TRUE
.fill_na()
in favour of fill_gaps()
, and will be defunct in the next release.difftime
.hms
..drop
for dropping empty factor or not in as_tsibble()
and build_tsibble()
.-
operator between yearweek, yearmonth, and yearquarter returns class difftime
.key_data
to build_tsibble()
for the easy-to-reason purpose.yearquarter()
better supports strings that contains "Q"/"Qtr"/"Quarter". (#107)as_tsibble.ts()
for monthly series starting at other months than January. (#89)guess_frequency.yearweek()
returns 52.18 for more accurate weekly representation, instead of 52.n()
now can be called in slice.tbl_ts()
. (#95)slice.tbl_ts()
.arrange.tbl_ts()
.*_join()
for not finding key or index when by
is specified. (#102)data(tourism)
and 2017 data.v0.8.0
grouped data frames, tsibble allows for empty key values and disregards the lazily stored key. All operations now recalculate the keying structure.grouped_ts
) is a subclassing of grouped_df
..size
is retired in stretch()
in favour of .step
.stretch()
gained a new .fill = NA
argument, which returns the same length as the input. To restore the previous behaviour, please use .fill = NULL
. (#88)slide_tsibble()
, tile_tsibble()
, stretch_tsibble()
provide fast and shorthand subsetting tsibble by rolling rows.slide()
gained a new .step
argument for calculating at every specified step instead of every single step.update_tsibble()
to update key and index a bit easier.rbind()
for dropping custom index class. (#78)count_gaps()
for dropping custom index class.count_gaps()
now only summarises keys with gaps instead of all the keys.guess_frequency.yearweek()
returning Inf
. (@jeffzi, #84)fill_gaps()
returns a grouped tsibble too.find_duplicates()
.fill_na()
in favour of fill_gaps()
..drop
in column-wise dplyr verbs.key_by()
(no idea why it's there).scan_gaps()
joins the family of implicit missing values handlers.future_
. It requires the furrr package to be installed. (#66)[.tbl_ts
. (#76)time_in()
and filter_index()
.split_by()
and case_na()
.find_duplicates()
.fill_na()
..data
is a complete tsibble, fill_gaps()
gives a warning instead of an error when name-value pairs are supplied.filter_index()
works for a grouped tsibble.This release simplifies the "key" structure. The nesting and crossing definition has been removed from the "key" specification. One or more variables forming the "key", are required to identify observational units over time, but no longer assume the relationship between these variables. The nesting and crossing structure will be dealt with visualisation and forecasting reconciliation in downstream packages.
count_gaps.tbl_ts()
returns a tibble containing gaps for each key value rather than an overall gap, which is consistent with the rest of tsibble methods. And all output column names that are not supplied by users gain a prefixed ".".time_unit()
accepts interval
input instead of time vectors to avoid overheads, also marked as internal function.slider()
and pslider()
as new functions partial_slider()
and partial_pslider()
. Argument .partial
is removed from slider()
and pslider()
to feature a simpler interface.group
from build_tsibble()
. In order to construct a grouped tsibble, x
requires a grouped df.has_gaps()
to quickly check if there are implicit time gaps for each key in a tsibble.new_data()
to produce the future of a tsibble.filter_index()
to filter time window for a tsibble.time_in()
to check if time falls in the ranges in compact expression, with no need for time zone specification.new_tsibble()
creates a subclass of a tsibble.fill_na()
to fill_gaps()
, for more expressive function name and consistency to has_gaps()
and count_gaps()
. Soft-deprecated fill_na()
. (#71)is_duplicated()
, are_duplicated()
and duplicates()
.POSIXct
, time zone will be displayed in the header via print()
.holiday_aus()
that requires package "timeDate".summarise.tbl_ts()
, select.tbl_ts()
& fill_na.tbl_ts()
scoping issue (#67).slice.tbl_ts()
correctly handles logical NA
.fill_na()
will only replace implicit time gaps by values and functions, and leave originally explicit NA
intact.tidyr::fill()
gained support for class "grouped_ts", and it is re-exported again. (#73)fill_na()
, in favour of fill_gaps()
.find_duplicates()
, in favour of are_duplicated()
.case_na()
, and will be defunct in next release.split_by()
, which is under development as S3 generic in dplyr.as.tsibble()
, following as.tibble()
in tibble..drop
argument in column-wise verbs, and suggested to use as_tibble()
.select()
doesn't select index, it will inform users and automatically select it.append_row()
for easily appending new observations to a tsibble. (#59)/
, consistent with lm
. (#64)fill_na()
for multiple replacements when using with group_by()
, introduced in v0.5.1.as_tsibble.grouped_df()
respected its existing groups and removed argument group
. (#60)select.tbl_ts()
. (#63)case_na()
& split_by()
.unnest.lst_ts
respects the ordering of "key" values. (#56)split_by()
and nest.tbl_ts()
respect the appearance ordering of input variables. (#57)group_indices.tbl_ts()
and key_indices()
return consistent formats as its generic.key
no longer accepted character.nest.tbl_ts()
.index_by()
gives more informative error when LHS is named as index.as.tibble()
.tibble()
.tile()
gained a new argument .bind = FALSE
.+
& -
) for yearweek, yearmonth, and yearquarter.new_interval()
creates an "interval" object with the specified values.fill_na()
for replacing values when group_by()
.[
.group_by()
+ summarise()
. (#47)unnest.lst_ts()
.gather.tbl_ts()
. (#54)slide()
& stretch()
use the same coercion rules as dplyr::combine()
now, if .bind = TRUE
.pillar
.tibble
.This release introduced the breaking changes to the "interval" class to make tsibble better support finer time resolution (e.g. millisecond, microsecond, and nanosecond). The "interval" format changes from upper case to short hand. To support new time index class, only index_valid()
and pull_interval()
need to be defined now.
group_by_key()
to easily group the key variables.slide()
gained a new argument .align = "right"
to align at "right", "center", or "left". If window size is even for center alignment, either "center-right" or "center-left" is needed.+
& -
) for yearweek, yearmonth, and yearquarter.slide()
and stretch()
gained a new argument .bind = FALSE
.NA
or NULL
with 0
in the "interval" class to make the representation simpler.interval
class has new slots of "millisecond", "microsecond", "nanosecond".time_unit()
is a function instead of S3 generic, and made index extension a bit easier.format.yearweek()
.group_by.lst_ts()
for dropping the grouping information.stretch2()
only applying .f
to one input.as_tsibble.grouped_df()
for groups. (#44).fill = NULL
for slide()
.purrr
style exactly (#35):
slide()
, tile()
, stretch()
return lists only instead of numerics before.slide2()
, pslide()
to map over multiple inputs simultaneously.slide_dbl()
, slide_int()
, slide_chr()
, slide_lgl()
.slide()
gained a new argument .partial
to support partial sliding.x
to .x
in slider()
, tiler()
, stretcher()
.pslider()
, ptiler()
, pstretcher()
support multiple inputs now, and split them in parallel.holiday_aus()
for Australian national and state-based public holiday.diff()
for year-week, year-month, and year-quarter.yearweek()
, yearmonth()
, yearquarter()
supported for character.slide2()
, pslide()
, tile2()
, ptile()
, stretch2()
, pstretch()
to slide over multiple inputs simultaneously (#33).units_since()
for index classes.is_53weeks()
for determine if the year has 53 ISO weeks.key_sum()
for extending tsibble.as_tsibble.ts()
removed the tsp
attribute from the value
column.lst_ts
(#25).tsibble()
.fill_na()
and count_gaps
when a tsibble of unknown interval.as_tsibble.tbl_ts()
& as_tsibble.grouped_ts()
now return self (#34).id()
is used in the tsibble context (e.g. as_tsibble()
, tsibble()
, build_tsibble()
) regardless of the conflicts with dplyr or plyr, to avoid frustrating message (#36).select.tbl_ts()
now preserved index.as.ts.tbl_ts()
for ignoring the value
argument when the key is empty.[.tbl_ts()
when subsetting columns by characters (#30).fill_na.tbl_ts()
dropping custom index class (#32).format.yearweek()
due to the boundary issue (#27).index
contains NA
, abort.nycflights13 >= 1.0.0
.The tsibble package has a hexagon logo now! Thanks Mitch (@mitchelloharawild).
difference()
computes lagged differences of a numeric vector. It returns a vector of the same length as the input with NA
padded. It works with mutate()
.gather()
/spread()
, nest()
/unnest()
to tbl_ts
.tsummarise()
.index2
deviates from index
(using index_by()
), the index2
will be part of grouping variables.This release (hopefully) marks the stability of a tsibble data object (tbl_ts
). A tbl_ts
contains the following components:
key
: single or multiple columns uniquely identify observational units over time. A key consisting of nested and crossed variables reflects the structure underlying the data. The programme itself takes care of the updates in the "key" when manipulating the data. The "key" differs from the grouping variables with respect to variables manipulated by users.index
: a variable represents time. This together the "key" uniquely identifies each observation in the data table.index2
: why do we need the second index? It means re-indexing to a variable, not the second index. It is identical to the index
most time, but start deviating when using index_by()
. index_by()
works similarly to group_by()
, but groups the index only. The dplyr verbs, like filter()
, mutate()
, operates on each time group of the data defined by index_by()
. You may wonder why introducing a new function rather than using group_by()
that users are most familiar with. It's because time is indispensable to a tsibble, index_by()
provides a trace to understanding how the index changes. For this purpose, group_by()
is just too general. For example, index_by()
+ summarise()
aggregates data to less granular time period, leading to the update in index, which is nicely and intuitively handled now.interval
: an interval
class to save a list of time intervals. It computes the greatest common factor from the time difference of the index
column, which should give a sensible interval for the almost all the cases, compared to minimal time distance. It also depends on the time representation. For example, if the data is monthly, the index is suggested to use a yearmonth()
format instead of Date
, as Date
only gives the number of days not the number of months.regular
: since a tsibble factors in the implicit missing cases, whether the data is regular or not cannot be determined. This relies on the user's specification.ordered
: time-wise and rolling window functions assume data of temporal ordering. A tsibble will be sorted by its time index. If a key is explicitly declared, the key will be sorted first and followed by arranging time in ascending order. If it's not in time order, it broadcasts a warning.tsummarise()
and its scoped variants. It can be replaced by the combo index_by()
+ summarise()
(#20). tsummarise()
provides an unintuitive interface where the first argument keeps the same size of the index, but the remaining arguments reduces rows to a single one. Analogously, it does group_by()
and then summarise()
. The proposed index_by()
solves the issue of index update.inform_duplicates()
(defunct) to find_duplicates()
to better reflect its functionality.key_vars()
and group_vars()
return a vector of characters instead of a list.distinct.tbl_ts()
now returns a tibble instead of an error.dplyr::do()
and tidyr::fill()
, as they respect the input structure.index_sum()
, and replaced by index_valid()
to extend index type support.index_by()
groups time index, as the counterpart of group_by()
in temporal context.count_gaps()
and gaps()
counts time gaps (implicit missing observations in time).yearweek()
creates and coerces to a year-week object. (#17)fill_na.tbl_ts()
gained a new argument of .full = FALSE
. .full = FALSE
(the default) inserts NA
for each key within its time period, TRUE
for the entire time span. This affects the results of fill_na.tbl_ts()
as it only took TRUE
into account previously. (#15)drop
argument to .drop
in column-wise dplyr verbs.duplicated
argument in pull_interval()
.group_by.tbl_ts()
behaves exactly the same as group_by.tbl_df
now. Grouping variables are temporary for data manipulation. Nested or crossed variables are not the type that group_by()
thinks.glimpse.tbl_ts()
.fill_na()
.transmute.tbl_ts()
for a univariate time series due to unregistered tidyselect helpers. (#9).select.tbl_ts()
and rename.tbl_ts()
for not preserving grouped variables (#12).select.tbl_ts()
and rename.tbl_ts()
for renaming grouped variables.tbl_ts
gains a new attribute index2
, which is a candidate of new index (symbol) used by index_by()
.attr(grouped_ts, "vars")
stores characters instead of names, same as attr(grouped_df, "vars")
.This release introduces major changes into the underlying tbl_ts
object:
tbl_ts
class to reduce the object size, and computed on the fly when printing.arrange()
and slice()
functions.tbl_ts
object is a symbol now instead of a quosure.tbl_ts
object is an unnamed list of symbols.key_update()
to change/update the keys for a given tsibble.unkey()
as an S3 method for a tsibble of key size < 2.key_indices()
as an S3 method to extract key indices.split_by()
to split a tsibble into a list of data by unquoted variables.build_tsibble()
allows users to gain more control over a tsibble construction.as_tsibble.msts()
for multiple seasonality time series defined in the forecast package.as_tsibble.ts()
for daily time series (when frequency = 7).group_by.tbl_ts()
does not accept named expressions.filter()
and slice()
). This avoids unnecessary re-computation for many function calls.tsummarise()
including tsummarise_all()
, tsummarise_if()
, tsummarise_at()
.slide()
, tile()
, stretch()
, are no longer defined as S3 methods. Several new variants have been introduced for the purpose of type stability, like slide_lst()
(a list), slide_dfr()
(a row-binding data frame), slide_dfc()
(a column-binding data frame).index
variable must sit in the first name-value pair in tsummarise()
instead of any position in the call.transmute.tbl_ts()
keeps the newly created variables along with index and keys, instead of throwing an error before.glimpse.tbl_ts()
format.key()
for nesting crossed with another nesting.This release marks the complete support of dplyr key verbs.
tidyr::fill()
fills NA
backward or forward in tsibble.tbl_ts
support for dplyr::*_join()
.tbl_ts
support for dplyr::transmute()
and dplyr::distinct()
and return an error.inform_duplicates()
informs which row has duplicated elements of key and index variables.summarise.tbl_ts()
and tsummarise.tbl_ts()
, when calling functions with no parameters like dplyr::n()
.summarise.tbl_ts()
and tsummarise.tbl_ts()
, one grouping level should be dropped for the consistency with dplyr::summarise()
for a grouped tbl_ts
.NULL
and tbl_ts
are supported in as_tsibble()
. An empty tsibble is not allowed.group_by.tbl_ts(.data, ..., add = TRUE)
works as expected now.grouped_ts
and grouped_df
.NEWS.md
file to track changes to the package.