scan_gaps()
joins the family of implicit missing values handlers.- The rolling window family gains parallel processing capabilities, prefixed by
future_
. It requires the furrr package to be installed. (#66)
- Regression bug (since tsibble v0.6.0) for subsetting tsibble using
[.tbl_ts
. (#76) - Issue a warning when a system time zone is "Europe/London" for
time_in()
andfilter_index()
.
- Defunct
split_by()
andcase_na()
. - Deprecated
find_duplicates()
. - Continue with soft-deprecation of
fill_na()
.
- Fixed check errors on Fedora.
- If
.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()
acceptsinterval
input instead of time vectors to avoid overheads, also marked as internal function.- Separate partial sliding from
slider()
andpslider()
as new functionspartial_slider()
andpartial_pslider()
. Argument.partial
is removed fromslider()
andpslider()
to feature a simpler interface. - Removed argument
group
frombuild_tsibble()
. In order to construct a grouped tsibble,x
requires a grouped df.
- Added S3 generic
has_gaps()
to quickly check if there are implicit time gaps for each key in a tsibble. - Added S3 generic
new_data()
to produce the future of a tsibble. - A shorthand
filter_index()
to filter time window for a tsibble. - New S3 generic
time_in()
to check if time falls in the ranges in compact expression, with no need for time zone specification. - An empty tsibble is now valid and will not raise an error, which makes it easier to programme with.
- New vignettes on handling implicit missingness and FAQ.
new_tsibble()
creates a subclass of a tsibble.- Renamed
fill_na()
tofill_gaps()
, for more expressive function name and consistency tohas_gaps()
andcount_gaps()
. Soft-deprecatedfill_na()
. (#71) - Added
is_duplicated()
,are_duplicated()
andduplicates()
. - If
POSIXct
, time zone will be displayed in the header viaprint()
. - Added index support for ordered factors.
- Fixed unexpected error message for
holiday_aus()
that requires package "timeDate". - Fixed
summarise.tbl_ts()
,select.tbl_ts()
&fill_na.tbl_ts()
scoping issue (#67). slice.tbl_ts()
correctly handles logicalNA
.fill_na()
will only replace implicit time gaps by values and functions, and leave originally explicitNA
intact.tidyr::fill()
gained support for class "grouped_ts", and it is re-exported again. (#73)
- Soft-deprecated
fill_na()
, in favour offill_gaps()
. - Soft-deprecated
find_duplicates()
, in favour ofare_duplicated()
. - Deprecated
case_na()
, and will be defunct in next release. - Deprecated
split_by()
, which is under development as S3 generic in dplyr. - Soft-deprecated
as.tsibble()
, followingas.tibble()
in tibble. - Deprecated
.drop
argument in column-wise verbs, and suggested to useas_tibble()
. - If
select()
doesn't select index, it will inform users and automatically select it.
- Added
append_row()
for easily appending new observations to a tsibble. (#59) - Nesting structure can be specified using
/
, consistent withlm
. (#64)
- Fixed warning in
fill_na()
for multiple replacements when using withgroup_by()
, introduced in v0.5.1. as_tsibble.grouped_df()
respected its existing groups and removed argumentgroup
. (#60)- Preserve the ordering of key specification in
select.tbl_ts()
. (#63)
- Soft-deprecated
case_na()
&split_by()
.
unnest.lst_ts
respects the ordering of "key" values. (#56)split_by()
andnest.tbl_ts()
respect the appearance ordering of input variables. (#57)group_indices.tbl_ts()
andkey_indices()
return consistent formats as its generic.- Argument
key
no longer accepted character.
- Slightly faster
nest.tbl_ts()
. index_by()
gives more informative error when LHS is named as index.
- No longer reexported
as.tibble()
. - Reexported
tibble()
.
tile()
gained a new argument.bind = FALSE
.- Vectorised arithmetic operators (
+
&-
) for yearweek, yearmonth, and yearquarter. new_interval()
creates an "interval" object with the specified values.
- Faster performance in
fill_na()
for replacing values whengroup_by()
. - Speed improvement when subsetting yearweek, yearmonth and yearquarter using
[
.
- Fixed key updating via
group_by()
+summarise()
. (#47) - Respected the ordering of input variables while creating the key.
- Fixed "attempt to select less than one element in integerOneIndex" error message in
unnest.lst_ts()
. - Fixed incorrect interval when doing join operations for custom index class. (#52)
- Avoided warnings when character input for key and value in
gather.tbl_ts()
. (#54)
slide()
&stretch()
use the same coercion rules asdplyr::combine()
now, if.bind = TRUE
.- Avoid strong dependency on
pillar
. - Setting row names on a tsibble is deprecated, which is consistent with
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.
- Added "nanotime" support for nanoseconds.
- Added scoped variant
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.- Defined arithmetic operators (
+
&-
) for yearweek, yearmonth, and yearquarter. slide()
andstretch()
gained a new argument.bind = FALSE
.- A new vignette on window functions.
- Speed improvement for internals when it's a known valid tsibble. (#43)
- Better support "millisecond" and "microsecond".
- Replaced
NA
orNULL
with0
in the "interval" class to make the representation simpler. - The
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.
- Fixed warning in
format.yearweek()
. - Fixed
group_by.lst_ts()
for dropping the grouping information. - Fixed
stretch2()
only applying.f
to one input. - Fixed NSE in
as_tsibble.grouped_df()
for groups. (#44) - Fixed bug in
.fill = NULL
forslide()
.
- Moved package "timeDate" from Imports to Suggests.
- Added "anytime" to Imports for better parsing characters.
- Restructured windowed functions to follow the
purrr
style exactly (#35):slide()
,tile()
,stretch()
return lists only instead of numerics before.- added
slide2()
,pslide()
to map over multiple inputs simultaneously. - added other type-stable variants such as
slide_dbl()
,slide_int()
,slide_chr()
,slide_lgl()
.
- A negative window size results in a backward moving direction.
slide()
gained a new argument.partial
to support partial sliding.
- Renamed
x
to.x
inslider()
,tiler()
,stretcher()
. pslider()
,ptiler()
,pstretcher()
support multiple inputs now, and split them in parallel.
- New
holiday_aus()
for Australian national and state-based public holiday. - Defined
diff()
for year-week, year-month, and year-quarter. yearweek()
,yearmonth()
,yearquarter()
supported for character.- Added
slide2()
,pslide()
,tile2()
,ptile()
,stretch2()
,pstretch()
to slide over multiple inputs simultaneously (#33). - New S3 generics
units_since()
for index classes. - New
is_53weeks()
for determine if the year has 53 ISO weeks. - New S3 generics
key_sum()
for extending tsibble.
as_tsibble.ts()
removed thetsp
attribute from thevalue
column.- Dropped the "lst_col" attribute from
lst_ts
(#25). - More informative error message when a data frame is passed to
tsibble()
. - More informative error message for
fill_na()
andcount_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.
- Fixed bug in
as.ts.tbl_ts()
for ignoring thevalue
argument when the key is empty. - Fixed bug in
[.tbl_ts()
when subsetting columns by characters (#30). - Fixed bug in
fill_na.tbl_ts()
dropping custom index class (#32). - Fixed bug in
format.yearweek()
due to the boundary issue (#27). - If a column passed as
index
containsNA
, abort.
- Suggested on
nycflights13 >= 1.0.0
.
The tsibble package has a hexagon logo now! Thanks Mitch (@mitchelloharawild).
- New
difference()
computes lagged differences of a numeric vector. It returns a vector of the same length as the input withNA
padded. It works withmutate()
. - Added the support of
gather()
/spread()
,nest()
/unnest()
totbl_ts
.
- retired
tsummarise()
.
- If
index2
deviates fromindex
(usingindex_by()
), theindex2
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 theindex
most time, but start deviating when usingindex_by()
.index_by()
works similarly togroup_by()
, but groups the index only. The dplyr verbs, likefilter()
,mutate()
, operates on each time group of the data defined byindex_by()
. You may wonder why introducing a new function rather than usinggroup_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
: aninterval
class to save a list of time intervals. It computes the greatest common factor from the time difference of theindex
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 ayearmonth()
format instead ofDate
, asDate
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.
- Deprecated
tsummarise()
and its scoped variants. It can be replaced by the comboindex_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 doesgroup_by()
and thensummarise()
. The proposedindex_by()
solves the issue of index update. - Renamed
inform_duplicates()
(defunct) tofind_duplicates()
to better reflect its functionality. key_vars()
andgroup_vars()
return a vector of characters instead of a list.distinct.tbl_ts()
now returns a tibble instead of an error.- No longer reexported
dplyr::do()
andtidyr::fill()
, as they respect the input structure. - Defunct
index_sum()
, and replaced byindex_valid()
to extend index type support.
index_by()
groups time index, as the counterpart ofgroup_by()
in temporal context.- A new S3 generic
count_gaps()
andgaps()
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) insertsNA
for each key within its time period,TRUE
for the entire time span. This affects the results offill_na.tbl_ts()
as it only tookTRUE
into account previously. (#15)- Renamed the
drop
argument to.drop
in column-wise dplyr verbs. - Dropped the
duplicated
argument inpull_interval()
. group_by.tbl_ts()
behaves exactly the same asgroup_by.tbl_df
now. Grouping variables are temporary for data manipulation. Nested or crossed variables are not the type thatgroup_by()
thinks.
- Added overall time span to the
glimpse.tbl_ts()
. - Slightly improved the speed of
fill_na()
.
- Fixed
transmute.tbl_ts()
for a univariate time series due to unregistered tidyselect helpers. (#9). - Fixed bug in
select.tbl_ts()
andrename.tbl_ts()
for not preserving grouped variables (#12). - Fixed bug in
select.tbl_ts()
andrename.tbl_ts()
for renaming grouped variables.
- A
tbl_ts
gains a new attributeindex2
, which is a candidate of new index (symbol) used byindex_by()
. - The time interval is obtained through the greatest common factor of positive time differences. This covers broader cases than the minimal value.
attr(grouped_ts, "vars")
stores characters instead of names, same asattr(grouped_df, "vars")
.
This release introduces major changes into the underlying tbl_ts
object:
- Dropped the attribute "key_indices" from a
tbl_ts
class to reduce the object size, and computed on the fly when printing. - Gained a new attribute "ordered" to identify if it is arranged by key and index in ascending order. If not, broadcast a warning. The warning likely occurs to
arrange()
andslice()
functions. - The "index" attribute in a
tbl_ts
object is a symbol now instead of a quosure. - The "key" attribute in a
tbl_ts
object is an unnamed list of symbols.
- "key" helpers:
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.- Added
as_tsibble.msts()
for multiple seasonality time series defined in the forecast package.
- Fixed
as_tsibble.ts()
for daily time series (when frequency = 7). group_by.tbl_ts()
does not accept named expressions.
- No longer throw an error when grouping the index.
- An interval of regularly spaced tsibble is (re)computed when creating the tsibble and performing the row-wise operations (like
filter()
andslice()
). This avoids unnecessary re-computation for many function calls.
- Added the scoped variants for
tsummarise()
includingtsummarise_all()
,tsummarise_if()
,tsummarise_at()
.
- The windowed functions, including
slide()
,tile()
,stretch()
, are no longer defined as S3 methods. Several new variants have been introduced for the purpose of type stability, likeslide_lst()
(a list),slide_dfr()
(a row-binding data frame),slide_dfc()
(a column-binding data frame). - The
index
variable must sit in the first name-value pair intsummarise()
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.- Depends on purrr (>= 0.2.3)
- Fixed the error message in
glimpse.tbl_ts()
- Fixed
format.key()
for nesting crossed with another nesting.
This release marks the complete support of dplyr key verbs.
tidyr::fill()
fillsNA
backward or forward in tsibble.- Implement
tbl_ts
support fordplyr::*_join()
. - No
tbl_ts
support fordplyr::transmute()
anddplyr::distinct()
and return an error.
inform_duplicates()
informs which row has duplicated elements of key and index variables.
- Fix bug in
summarise.tbl_ts()
andtsummarise.tbl_ts()
, when calling functions with no parameters likedplyr::n()
. - In
summarise.tbl_ts()
andtsummarise.tbl_ts()
, one grouping level should be dropped for the consistency withdplyr::summarise()
for a groupedtbl_ts
. - Fix incorrect group and key indices.
NULL
andtbl_ts
are supported inas_tsibble()
. An empty tsibble is not allowed.group_by.tbl_ts(.data, ..., add = TRUE)
works as expected now.
- Better handling
grouped_ts
andgrouped_df
. - More informative error messages.
- Initial release on CRAN.
- Added a
NEWS.md
file to track changes to the package. - Pre-release on Github