[R] How to parse a really silly date with lubridate
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Wed Jul 13 23:40:54 CEST 2022
Hello,
Are you looking for mutate? In the example below I haven't included the
filter, since the tibble only has 2 rows. But the date column is coerced
to an actual datetime class in place, without the need for NewDate.
suppressPackageStartupMessages({
library(tibble)
library(dplyr)
})
DDATA <- tibble(Date = c('9. Jul 2022 at 11:39', '10. Jul 2022 at 01:58'))
DDATA %>%
mutate(Date = lubridate::dmy_hm(Date))
#> # A tibble: 2 × 1
#> Date
#> <dttm>
#> 1 2022-07-09 11:39:00
#> 2 2022-07-10 01:58:00
Hope this helps,
Rui Barradas
Às 17:14 de 13/07/2022, Dr Eberhard W Lisse escreveu:
>
> Hi,
>
> while all of the below work in a character vector, none works in
> the tibble.
>
> The following
>
> DDATA %>%
> add_column(as.tibble(lubridate::dmy_hm(DDATA$Date)),
> .before = "Period") %>%
> rename(NewDate=value) %>%
> select(Date,NewDate) %>%
> filter(between(as.Date(NewDate),as.Date('2022-07-09'),
> as.Date('2022-07-10')))
>
> does work
>
> # A tibble: 3 × 2
> Date NewDate
> <chr> <dttm>
> 1 9. Jul 2022 at 11:39 2022-07-09 11:39:00
> 2 10. Jul 2022 at 01:58 2022-07-10 01:58:00
> 3 10. Jul 2022 at 11:26 2022-07-10 11:26:00
>
> but I wonder if that can not be done more elegantly, ie by direct
> replacements in the column.
>
> greetings, el
>
> On 2022-07-13 16:48 , Rui Barradas wrote:
> [...]
> > d <- c('9. Jul 2022 at 11:39', '10. Jul 2022 at 01:58')
> > lubridate::dmy_hm(d)
> > #> [1] "2022-07-09 11:39:00 UTC" "2022-07-10 01:58:00 UTC"
> [...]
>
> On 2022-07-13 16:03 , Ben Tupper wrote:
> [...]
> > s = c("9. Jul 2022 at 11:39", "10. Jul 2022 at 01:58")
> > as.POSIXct(s, format = "%d. %b %Y at %H:%M")
> > as.POSIXct(s, format = "%d. %b %Y at %H:%M", tz = "UTC")
> [...]
>
> On 2022-07-13 15:52 , Ivan Krylov wrote:
> [...]
> > Sys.setlocale('LC_TIME', 'C')
> > strptime(
> > c('9. Jul 2022 at 11:39', '10. Jul 2022 at 01:58'),
> > '%d. %b %Y at %H:%M'
> > )
> [...]
>
>
> > Às 14:40 de 13/07/2022, Dr Eberhard Lisse escreveu:
> >>
> >> Hi,
> >>
> >> I have data file which generated by an otherwise very nice (diabetes
> >> log) app, but exports dates really silly.
> >>
> >> After reading the enclosed mwe.csv into R like so
> >>
> >> MWE <- read_delim('mwe.csv', delim = ';') %>%
> >> select(Date) %>%
> >> print()
> >>
> >>
> >> this comes out as:
> >>
> >> # A tibble: 2 × 1
> >> Date
> >> <chr>
> >> 1 9. Jul 2022 at 11:39
> >> 2 10. Jul 2022 at 01:58
> >>
> >>
> >> No matter what I try I am not able to parse this inside R to get at
> >> proper dates (I have loaded tidyverse and lubridate).
> >>
> >> I can easily do somethig
> >>
> >> csvq -d ';' -t '%e. %b %Y at %H:%i' \
> >> 'SELECT Date as oridate,
> >> DATETIME_FORMAT(Date, "%Y-%m-%d %H:%m") AS date
> >> FROM mwe'
> >>
> >> +-----------------------+------------------+
> >> | oridate | date |
> >> +-----------------------+------------------+
> >> | 9. Jul 2022 at 11:39 | 2022-07-09 11:07 |
> >> | 10. Jul 2022 at 01:58 | 2022-07-10 01:07 |
> >> +-----------------------+------------------+
> >>
> >> and hence could easily do something like
> >>
> >> csvq -d ';' -t '%e. %b %Y at %H:%i' \
> >> 'ALTER mwe
> >> SET Date = DATETIME_FORMAT(Date, "%Y-%m-%d %H:%m")'
> >>
> >> but would rather like to be able to do it inside R and would therefor
> >> appreciate any advice in this regard.
> >>
> >>
> >> greetings, el
> >>
> >
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list