NEWS in package ‘zoo’
Changes in version 1.7-7
- Fixed bug where colnames were dropped when merging with zero width
zoo object.
- Fixed slow-down in rollapply() compared to versions up to 1.6-x.
- C code now correctly declares GPL-2 (or later) license in the
src/*.c files.
Changes in version 1.7-6
- Removed dependency on fCalendar which was only for historical purposes.
vignette("zoo", package = "zoo") outlines how timeDate instead of
fCalendar can be used together with zoo.
Changes in version 1.7-5
- fixed a bug in the aggregate() method which occured when using
it with "zoo" objects that have a "timeDate" index.
- in read.zoo index.column can refer to column names or numbers (previously
only numbers)
- fully export all as.Date.* methods so that they can be used more
easily (i.e., without extra registration) with as.Date() generics from
other packages (base in particular).
Changes in version 1.7-4
- fixed bug in rollapply() and slowness in rollmax()
- read.zoo() gains text= argument similar to that in new read.table()
Changes in version 1.7-3
- Added drop=TRUE argument to merge() method. When set to drop=FALSE
this allows to merge a zero-column series with a zoo vector to a
one-column matrix. The latter is the default in the cbind() method.
- Enhanced the $<- method so that z$a <- value works even if z is a
zoo series without data.
- Bug fix in C-version of lag function for xts.
Changes in version 1.7-2
- modified as.Date.numeric() is now in the zoo namespace rather than in
the base namespace, own as.Date() generic to assure dispatch.
For packages depending on zoo, this means that they may need to import
if from zoo (or call zoo:::as.Date.numeric directly).
- small bug fixes
Changes in version 1.7-1
- internal change to roll* routines to increase compatibility with classes
built on top of "zoo" (especially "xts"). This has no effect on "zoo".
- as.Date.numeric(x, origin = "0000-00-00") is now also accepted being
equivalent to origin = as.Date("0000-01-01") - 1. (for MATLAB dates)
Changes in version 1.7-0
- A [<- method was added and the behaviour is now consistent with the
[ method.
- check.names argument of merge() method now defaults to FALSE.
- Added a new as.zoo() method for "matrix" objects in order to preserve
column names. Also, a new "data.frame" method leverages the "matrix"
method.
- In rollapply() width may be a list whose components are offsets. ascending
argument is no longer supported. Use width's list form instead.
- In rollapply() new partial and fill arguments. na.pad argument is deprecated.
- rollapply() with FUN = mean will no longer call rollmean if the data has
any NA values
- added yax.flip argument to plot() method for "zoo" objects to be consistent
with the "ts" method.
- New vignette("zoo-read") introducing read.zoo() including several new
features (see also below).
- in read.zoo() if FUN is not specified but FUN2 is specified then FUN2
is applied in place of FUN. Previously FUN2 was ignored in this case.
Also format and tz arguments can be NULL in which case they are treated
as missing.
- read.zoo() can accept a vector of filenames in which case each is read in
and a single zoo object is returned formed by merging the individual ones.
- if FUN is omitted in read.zoo() and index.column specifies multiple columns
then the columns are pasted together separated by spaces and processing
continues as if there were one column.
- in read.zoo() index.column = 0 is now valid in which case 1, 2, 3, ... is
used for index
- read.zoo() can now read in a zoo object with an index but no data
- in most situations in which a plain numeric vector for index.column in
read.zoo() would give an error it now also tries using
as.list(index.column). As a result its almost always possible to use a
plain numeric index.column rather than a list.
- a new src/ directory containing C code backported from the xts package is now
included. This is the start of the process to align some of the faster C
internals of xts with zoo. xts is now using the LinkingTo option to
call certain code in the zoo package (previously in xts/src). Subsequent
zoo releases will begin to use the new C, which in the current release are
not yet available.
- new roll*r() wrappers which default to align = "right".
- new na.fill() function.
- new na.StructTS() function for seasonal NA interpolation using R's StructTS().
- rev() method for zooreg objects added.
- transform() method added.
- added "frequency" argument to as.zooreg() generic and associated methods.
Changes in version 1.6-5
- Fixed a technical error in the Sweave commands of zoo-faq.Rnw which
throws an error in the current R-devel (2.14.0 to be).
Changes in version 1.6-4
- names were automatically added to indexes in some cases hugely increasing
the size of the index. This is no longer done.
- diff can have a negative lag argument (for forward diffs). Previously
only positive was allowed.
- na.locf now calls na.approx with method = "constant" unless fromLast = TRUE.
In particular, arguments x and xout can be passed to na.locf which is used
in alignment applications.
- merge has check.names argument. If check.names = TRUE (the default)
then column names will be valid syntactic names.
- read.zoo's index.column argument can be a list such that FUN is called via
do.call(FUN, L) where i in list L is replaced with x[,i].
- added workaround in Ops.zoo to circumvent rare bug in base R
- added a median.zoo method
- added a quantile.zoo method
Changes in version 1.6-3
- new generic function xblocks() for plotting contiguous blocks along
the x-axis (intended for base graphics). A default method along with
"zoo" and "ts" methods is provided.
- new function na.aggregate().
- new maxgap argument for na.*() methods. Further refinements for
many na.*() methods, especially na.approx() and na.spline().
- xyplot() method rewritten; is now a wrapper around the xyplot()
method for "ts" objects in the "lattice" package (lattice:::xyplot.ts).
Accompanying infrastructure (llines(), lpoints(), ltext(), etc.),
help page, and examples have been substantially revised and expanded.
- new question #13 added to "zoo-faq" vignette
- FUN argument of aggregate() method now defaults to sum for consistency with
aggregate() method for "ts". Previously it had no default.
- new MATCH() method for "times" class.
Changes in version 1.6-2
- minor improvement in zoo-faq.Rnw for new R-devel.
Changes in version 1.6-1
- xtfrm() methods for yearmon/yearqtr added.
- enhanced documentation to emphasize that there is typically no
need for an ORDER() method if there is an appropriate xtfrm()
method.
- Bug fix in group generic functions for yearmon/yearqtr with
non-numeric return values.
Changes in version 1.6-0
- tis graphics support
- workaround to eliminate as.Date.numeric() warning when zoo loads
- read.zoo() now optionally accepts a data frame for the file argument
- better error message in read.zoo() if NAs found in index
- read.zoo() now accepts a split argument that allows reading in of datasets
in long format (where long is as defined in R's reshape command)
- methods for cbind(), merge(), rbind(), and c() now ignore NULL arguments
- fixed unique() methods for "yearmon" and "yearqtr" objects
- fixed a bug in group generic functions and -() generic for
"yearmon" and "yearqtr" objects
- plot.zoo now accepts vector lwd
- new rev() method for "zoo" objects
Changes in version 1.5-8
- bug fixes in unique() methods for yearmon/yearqtr
Changes in version 1.5-7
- added "zoo" methods for xtfrm(), split(), and subset()
- as.zoo() methods for "xts", "tis", "fts", and "mcmc" objects (the other
direction being handled by the respective packages)
- improvements in yearmon and yearqtr:
- added range(), unique(), and is.numeric() methods
- is.numeric() methods return FALSE
- as.yearmon() now also accepts "%b %Y" as a default format so
as.yearmon(as.character(ym)) where ym is yearmon now works
- fixed strip argument in xyplot() method (thanks to Christian Gunning)
- lag() method for "zooreg" objects now has an na.pad argument,
like the corresponding "zoo" method. Additinal bug fix.
- head() and tail() methods now allow second argument to be negative
- added is.na argument to na.trim()
- ORDER() methods for "chron", "dates", and "times" objects added.
Without these order has become very slow when using older versions of
the chron package (although the most recent version of chron has no
slowdown even without this fix as it implements xtfrm()).
Changes in version 1.5-6
- changed dependency in coercion functions and vignettes from
fCalendar/fSeries to timeDate/timeSeries
Changes in version 1.5-5
- documentation enhancements for new Rd parser
Changes in version 1.5-4
- improvments in read.zoo()
- updates in zoo FAQ
- small bug fix in plot.zoo() (ylim handling)
- small bug fixes in axis.yearmon() and axis.yearqtr()
- small bug fixes in aggregate.zoo()
- extended examples for plot.zoo(), xyplot.zoo(), aggregate.zoo()
- interactive plots/demos using the packages "TeachingDemos"
(plot.zoo) and "playwith" (xyplot.zoo)
- mean.yearmon and Sys.yearmon are defined. Similarly for yearqtr.
- min, max and range methods for yearmon are defined via Summary
Changes in version 1.5-3
- export as.Date.numeric() so that it does not get shadowed
by the new as.Date.numeric() in "stats" (from 2.7.0 on).
Both functions are almost identical, the version in zoo
just sets the default origin = 1970-01-01.
- added some glue for communication between "zoo" and "timeSeries":
new MATCH() and ORDER() methods for "timeDate", new as.zoo()
method for "timeSeries" objects (the inverse will be added to
fSeries).
- improved the zoo vignette, updating/correcting the information
about timeDate and timeSeries.
Changes in version 1.5-2
- read.zoo has new aggregate function argument to aggregate duplicate times
- new with.zoo method added
- FAQ updated
Changes in version 1.5-0
- new $.zoo and $<-.zoo methods
- read.zoo now passes format and tz to FUN if they are specified. If
FUN is not specified but tz and format specified then POSIXct translation
is done with respect to the specified format string.
- months.yearmon, quarters.yearmon, cycle.yearmon methods added
- months.yearqtr, quarters.yearqtr, cycle.yearqtr methods added
- as.yearqtr.character now accepts %q and default formats are
"%Y Q%q", "%Y q%q" and "%Y-%q".
- yearqtr.factor and yearmon.factor added
- as.yearmon.yearqtr now has frac argument consistent with as.Date.yearmon
- format.yearqtr and as.character.yearqtr performance speedup for the
common case of default format.
Changes in version 1.4-2
- The processing of regular series in aggregate.zoo()
was changed. By default, a regular series is only
created if the original series was regular. Otherwise,
a regular series is only created if indicated (by
setting argument regular = TRUE or by supplying a
specific frequency).
- zoo FAQ vignette added
- axis.yearqtr and axis.yearmon improved. They no longer
use axis.Date.
- as.yearmon.character accepts "%Y-%m" default format (as well
as prior default of "%Y-%m-%d")
- new summary() methods for yearmon/yearqtr objects which
simply report the summary of the underlying numeric vector.
- na.locf.default now uses fromLast= (consistent with the R
duplicated function). It is similar to the rev= argument
(which will be deprecated).
- comparisons between yearmon variables and character variables
that can be coerced to yearmon via as.yearmon now work. This
also lets character variables be used in start= and end=
arguments of window.zoo for zoo series with a yearmon index
(since window.zoo already allows such usage for any index class
that can be compared to character). Similarly for yearqtr.
Changes in version 1.4-1
- replaced by() calls by tapply() due to fixes in R
2.6.1-patched that caused errors in plot.zoo().
Changes in version 1.4-0
- added a write.zoo() function that writes zoo series to
a text file via write.table(). The index is included in
the first column so that it can be easily read again
using read.zoo().
- read.zoo() has a new argument index.column (default: 1)
which can be used to specify in which column of a data
file the index/time is stored.
- rapply() was removed from zoo - after being deprecated
since zoo 1.2-0 (and R 2.4.0) and replaced by rollapply().
- improved str() method for "zoo" and "zooreg" series, now
gives explicit information about class, start and end,
as well as data, index (and frequency).
- zoo() now has a default first argument like ts() has.
By default, zoo() is now zoo(NULL) and returns an empty
series. This differs somewhat from the default ts()
and zooreg() that return ts(NA) zooreg(NA), respectively.
- added ... arguments to the as.POSIXct and as.POSIXlt
methods
- implementation of as.Date.numeric() has been modified:
being backward compatible with the old zoo:::as.Date.numeric().
It now matches the new (2.7.0 to be) base:::as.Date.numeric(),
but also sets a default "origin" argument (1970-01-01).
- plot.type argument of plot.zoo() now chooses its default
value via the screen argument.
Changes in version 1.3-2
- merge.zoo() has been improved so that unnecessary checking of
frequencies is avoided for "zoo" objects.
Changes in version 1.3-1
- as.yearmon() can take format arguments that do not involve day,
e.g. as.yearmon("2007-01", "%Y-%m")
- added as.data.frame() methods for "yearmon" and "yearqtr"
objects
Changes in version 1.3-0
- checking for non-unique index entries has been improved:
zoo() throws a warning if a series with non-unique index entries
is created. merge() gives a more useful error message.
- inconsistencies when checking for regularity of series have been
resolved: is.regular(), frequency(), frequency<-() etc. all behave
consistently now.
- custom panel functions in plot.zoo can now refer to
parent.frame()$panel.number to determine the current panel. Also
added an example of this to ?plot.zoo.
- read.zoo() will behave consistently when the file contains no data.
- column names (if any) are checked now in rbind.zoo(), producing a
similar behaviour as in rbind.data.frame()
Changes in version 1.2-2
- the order of arguments (... now come after FUN) in rollapply has
been changed to allow unnamed additional arguments to be specified
for FUN. Previously they had to be named.
- bug in as.ts.zooreg fixed
Changes in version 1.2-1
- One of the examples on ?xyplot.zoo does not run with the
R 2.4.0 lattice. It is currently placed in \dontrun{}
(see comments in ?xyplot.zoo).
Changes in version 1.2-0
- rapply() was re-named to rollapply() because from R 2.4.0 on,
base R provides a function rapply() for recursive (not rolling)
application of functions, which was already described in the Green
Book. zoo::rapply() still exists for backward compatibility, however,
it is flagged as deprecated and now dispatches to rollapply() methods.
- added methods for xyplot() from package "lattice" for classes "zoo",
"ts", "its". These functions are still under development and the
interface and functionality might be modified/extended in future
releases.
- new function make.par.list() (which was previously a local function
parm() in zoo's plot() method) for processing named argument lists.
Useful in plotting routines like the plot() and xyplot() methods,
see ?make.par.list.
- subscripting by a "zoo" object whose data is logical is now defined, e.g.
z <- zoo(1:10); z[z > 3]
However, assignment such as
z[z > 3] <- 2 * z[z > 3]
does not work.
- fixed a bug in zoo() when ordered factors are supplied ("ordered"
class was dropped)
- fixed bug in subscripting for drop = TRUE and length of result is 1
- fixed bug in na.trim(x, "right")
- all= argument of merge.zoo is coerced to logical so one can do this:
merge(zoo(2:4, 2:4), zoo(1:3), all = 0:1)
Changes in version 1.1-1
- added na.spline() generic and default method for replacing
NAs via cubic spline interpolation
- rbind() method now exported explicitly again
Changes in version 1.1-0
- added a NAMESPACE, many S3 methods are not exported explicitly
anymore
- new argument ‘regular’ in read.zoo() which is set to FALSE. Only if
set to TRUE the series read is coerced to "zooreg" (if possible),
which was the previous default behaviour.
- suppressWarnings() was added in is.regular() and frequency() functions
which try() to convert indexes to numerics which might lead to errors
or warnings and NAs (e.g., for characters), both should be fully suppressed
now.
Changes in version 1.0-7
- added a ‘...’ argument to as.data.frame() method for
complying with R 2.4.0
- improved handling of ‘by’ argument in aggregate() method
Changes in version 1.0-6
- ?zoo now explicitly points out that the index of
zoo objects should have unique observations (aka
time stamps).
- The summary() was fixed to work also with duplicated
indexes.
- scale() method added.
- lines(x, y, ...) now supported.
- points added.
- -.yearmon and -.yearqtr added.
- axis.yearmon and axis.yearqtr added.
- Axis.yearmon and Axis.yearqtr added.
- na.trim generic and default method added.
Changes in version 1.0-5
- added a ‘y’ argument to plot.zoo() that allows to
generate scatter plots of univariate "zoo" series
(just as plot.ts(x, y = NULL, ...) does)
- fixed the usage of %in% in the window() methods,
now call MATCH() (rather than match()) directly.
Changes in version 1.0-4
- added a ‘rev’ argument to na.locf() which allows to
eliminate NAs by NOCB (next observation carried backward).
Changes in version 1.0-3
- added a barplot.zoo() method
- fixed frequency.zoo() which returned NA instead of NULL
for indexes of class "character"
- added an example to zoo-quickref for querying daily
exchange rates from oanda.com via get.hist.quote().
This contains a worked example how to omit weekends
from daily series.
- added an na.pad argument to diff.zoo() method
Changes in version 1.0-2
- Small enhancements of plot.zoo()
- Bug fixes in na.locf.default(), as.data.frame.zoo(),
lag.zoo(), lag.zooref().
Changes in version 1.0-1
- Convenience function read.zoo() for reading "zoo" series directly
from plain text files.
- New vignette ‘zoo-quickref’ with a quick reference particularly
aimed at (daily) financial series (contributed by Ajay Shah).
- plot.zoo now has screens=, widths= and heights= arguments for controlling
which series are plotted in which graphs and widths and heights of graphs.
The ylim= argument has been enhanced.
- argument k= can be vector in lag.zoo (suggested by Roger Koenker)
- na.locf.default bug fixed
Changes in version 1.0-0
- This release accompanies the publication in the Journal of Statistical
Software ("zoo: S3 Infrastructure for Regular and Irregular Time Series",
JSS, 14(6), 1-27) that essentially corresponds to the vignette contained
in the package. Please use this paper to cite zoo in publications.
- aggregate.zoo allows a function as the argument for computing
the aggregation groups. The return value is coerced to "zooreg"
if it is.regular.
- extended NA handling for lists and data.frames: na.locf.data.frame,
na.locf.list, na.contiguous.data.frame, na.contiguous.list
- pair notation, e.g. c(1985,2), for "zooreg" series is now also
allowed in window.zoo and window<-.zoo.
- fixed bug in rapply: result was transposed when by.column = FALSE and
a non-scalar function FUN was used.
Changes in version 0.9-9
- regular "zoo" series: objects of class "zooreg" (inheriting from "zoo")
can be used to store strictly regular series (similar to "ts" objects)
or series with an underlying regularity (as before but with observations
omitted). They have a frequency attribute that can be used for conversion
between "zoo" and "ts". The function is.regular() can be used for
checking the regularity of a series.
- improved merge() method: merge.zoo now accepts non-zoo arguments
(other than first) if all non-zoo args have the same NROW value
as the first argument (or are scalar). In that case the non-zoo
args are given the index of the first series. Scalars are added
for the full index of the merged series.
- merge() zoo can now optionally return a "data.frame" that contains
the numeric columns as "zoo" series and the "zoo" objects created
from factors converted back to "factor".
- [.zoo allows now indexing using observations from the index scale
(and not only observation numbers).
- rapply, rollmean, rollmax, rollmedian to perform rolling analyses
- extended functionality to plot.zoo type argument
- when plot.zoo used with one series list(...) can be omitted from
various plotting parameter arguments
- print.zoo documentation fix for R 2.1.0
- yearmon and yearqtr datetime classes
- head.ts, tail.ts
- c.zoo, range.zoo
- coredata.default, coredata.ts
Changes in version 0.9-1
- new generic functions ORDER() and MATCH() (with
order() and match() as the default) so that zoo()
can handle arbitrary index/time classes when
suitable methods for the generic function c(),
length(), order(), match() and subsetting [, are
supplied.
- improved printing of "zoo" objects and added
a summary() method.
- extended coercion functionality to and from
"zoo" objects. "its" objects can be coerced to
"zoo" and vice versa. "zoo" objects can be
coerced to vector, matrix, data.frame or list.
- added functionality to extract/assign to
the coredata() of a "zoo" object.
- added/improved functionality to extract/assign
to the window() of a "zoo" object.
- added/improved functionality to extract/assign
to the index() or time() of a "zoo" object.
- added lag(), diff(), start(), end(), head(),
tail() methods.
- improved plot.zoo() by more flexible expansion
of plotting parameters such as col, lty and pch.
- added a cbind() method for "zoo" objects (almost
synonymous with merge())
- NA handling for "zoo" objects via na.omit(),
na.contiguous(), na.approx() and na.locf().
- na.locf() generic function with default method (suitable
for "zoo" objects) which implements Last Observation
Carried Forward.
- na.approx() generic function with default method (suitable
for "zoo" objects) which implements elimination of NAs
by interpolation.
- added mathematical methods: group generic functions
for "zoo" objects, t(), cumsum(), cumprod(), cummin(),
and cummax().
- added model.frame.AsIs and model.frame.zoo to support
regression based on zoo objects, in particular with lm()
(but also many other regression functions).
- Zero length vector zoo objects may have non-zero index vectors
intended to be used in merge to extend zoo objects. zoo
changed to enable the creation of such objects by omitting
first argument.
- added a vignette explaining the new features
Changes in version 0.2-0
- zoo() now has defaults for both arguments x and order.by,
which mimic the default behaviour of ts().
- added new aggregate.zoo() method for computing summary
statistics of "zoo" objects along a coarser index grid.
- improved merge.zoo() in three directions:
1. handling of "zoo" objects with zero columns,
2. naming of columns in the merged "zoo" object
which behaves more like merge.data.frame();
a corresponding suffixes argument has also been added,
3. introced a fill argument which allows to fill gaps
by another value than NA.
- improved documentation with extended examples