[R] How to parse a really silly date with lubridate

Dr Eberhard W Lisse no@p@m @end|ng |rom ||@@e@NA
Wed Jul 13 18:14:19 CEST 2022


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
 >>
 >



More information about the R-help mailing list