-
Notifications
You must be signed in to change notification settings - Fork 207
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Parsing issues when combining as_date and across with multiple date formats #1042
Comments
I am also puzzled by this behavior. Internally in |
Thanks for looking into this and fixing it! |
Did you return to I had to change the following code from prior to 1.9.0 |
Right, and the changes I made when updating to 1.9.0 seemed to work but now with 1.9.1 they have reversed. To clarify: 1.9.0 lubridate 1.9.1 lubridate When troubleshooting the NAs in 1.9.0 I detailed it to the |
yes, the
If you used |
Version 1.9.2 ============= ### BUG FIXES * [#1104](tidyverse/lubridate#1104) Fix incorrect parsing of months when %a format is present. ### OTHER * Adapt to internal name changes in R-devel Version 1.9.1 ============= ### NEW FEATURES * `as_datetime()` accepts multiple formats in format argument, just like `as_date()` does. ### BUG FIXES * [#1091](tidyverse/lubridate#1091) Fix formatting of numeric inputs to parse_date_time. * [#1092](tidyverse/lubridate#1092) Fix regression in `ymd_hm` on locales where `p` format is not defined. * [#1097](tidyverse/lubridate#1097) Fix `as_date("character")` to work correctly with formats that include extra characters. * [#1098](tidyverse/lubridate#1098) Roll over the month boundary in `make_dateime()` when units exceed their maximal values. * [#1090](tidyverse/lubridate#1090) timechange has been moved from Depends to Imports. Version 1.9.0 ============= ### NEW FEATURES * `roll` argument to updating and time-zone manipulation functions is deprecated in favor of a new `roll_dst` parameter. * [#1042](tidyverse/lubridate#1042) `as_date` with character inputs accepts multiple formats in `format` argument. When `format` is supplied, the input string is parsed with `parse_date_time` instead of the old `strptime`. * [#1055](tidyverse/lubridate#1055) Implement `as.integer` method for Duration, Period and Interval classes. * [#1061](tidyverse/lubridate#1061) Make `year<-`, `month<-` etc. accessors truly generic. In order to make them work with arbitrary class XYZ, it's enough to define a `reclass_date.XYZ` method. * [#1061](tidyverse/lubridate#1061) Add support for `year<-`, `month<-` etc. accessors for `data.table`'s IDate and ITime objects. * [#1017](tidyverse/lubridate#1017) `week_start` argument in all lubridate functions now accepts full and abbreviated names of the days of the week. * The assignment value `wday<-` can be a string either in English or as provided by the current locale. * Date rounding functions accept a date-time `unit` argument for rounding to a vector of date-times. * [#1005](tidyverse/lubridate#1005) `as.duration` now allows for full roundtrip `duration -> as.character -> as.duration` * [#911](tidyverse/lubridate#911) C parsers treat multiple spaces as one (just like strptime does) * `stamp` gained new argument `exact=FALSE` to indicate whether `orders` argument is an exact strptime formats string or not. * [#1001](tidyverse/lubridate#1001) Add `%within` method with signature (Interval, list), which was documented but not implemented. * [#941](tidyverse/lubridate#941) `format_ISO8601()` gained a new option `usetz="Z"` to format time zones with a "Z" and convert the time to the UTC time zone. * [#931](tidyverse/lubridate#931) Usage of `Period` objects in rounding functions is explicitly documented. ### BUG FIXES * [#1036](tidyverse/lubridate#1036) `%within%` now correctly works with flipped intervals * [#1085](tidyverse/lubridate#1085) `as_datetime()` now preserves the time zone of the POSIXt input. * [#1072](tidyverse/lubridate#1072) Names are now handled correctly when combining multiple Period or Interval objects. * [#1003](tidyverse/lubridate#1003) Correctly handle r and R formats in locales which have no p format * [#1074](tidyverse/lubridate#1074) Fix concatination of named Period, Interval and Duration vectors. * [#1044](tidyverse/lubridate#1044) POSIXlt results returned by `fast_strptime()` and `parse_date_time2()` now have a recycled `isdst` field. * [#1069](tidyverse/lubridate#1069) Internal code handling the addition of period months and years no longer generates partially recycled POSIXlt objects. * Fix rounding of POSIXlt objects * [#1007](tidyverse/lubridate#1007) Internal lubridate formats are no longer propagated to stamp formater. * `train` argument in `parse_date_time` now takes effect. It was previously ignored. * [#1004](tidyverse/lubridate#1004) Fix `c.POSIXct` and `c.Date` on empty single POSIXct and Date vectors. * [#1013](tidyverse/lubridate#1013) Fix c(`POSIXct`,`POSIXlt`) heterogeneous concatenation. * [#1002](tidyverse/lubridate#1002) Parsing only with format `j` now works on numeric inputs. * `stamp()` now correctly errors when no formats could be guessed. * Updating a date with timezone (e.g. `tzs = "UTC"`) now returns a POSIXct. ### INTERNALS * `lubridate` is now relying on `timechange` package for update and time-zone computation. Google's CCTZ code is no longer part of the package. * `lubridate`'s updating logic is now built on top of `timechange` package. * Change implementation of `c.Period`, `c.Duration` and `c.Interval` from S4 to S3. Version 1.8.0 ============= ### NEW FEATURES * [#960](tidyverse/lubridate#960) `c.POSIXct` and `c.Date` can deal with heterogeneous object types (e.g `c(date, datetime)` works as expected) ### BUG FIXES * [#994](tidyverse/lubridate#994) Subtracting two duration or two period objects no longer results in an ambiguous dispatch note. * `c.Date` and `c.POSIXct` correctly deal with empty vectors. * `as_datetime(date, tz=XYZ)` returns the date-time object with HMS set to 00:00:00 in the corresponding `tz` ### CHANGES * [#966](tidyverse/lubridate#966) Lubridate is now built with cpp11 (contribution of @DavisVaughan)
Hi,
I have a data frame with multiple date columns (encoded as characters) where the date format can differ between columns (e.g.
col1
has the following formatYYYY-MM-DD
andcol2
is coded asDD/MM/YYYY
. What I'd like to do is supply multiple formats while converting the char columns to date columns.Using
lubridate::as_date(..., format = c(...))
, lubridate version is 1.8.0Not sure why this fails to convert the first element in date2 from
03/10/2020
to2020-10-03
.On the other hand, using base R's
as.Date(..., tryFormats = c(...))
works as expected / desired.Additionally, using
as_date(parse_date_time(..., orders = c(...)))
gives the right result too on this example.What is unexpected / surprising is that
as_date(...)
accepts multiple formats but generatesNA
s where there should be data. As far as I can tell, this only seems to be happening when combiningas_date
andacross
. If there are multiple formats in one single column thenas_date
works as expectedThe text was updated successfully, but these errors were encountered: