Dr Eberhard Lisse
2022-Jul-13 13:40 UTC
[R] How to parse a really silly date with lubridate
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
--
To email me replace 'nospam' with 'el'
? Wed, 13 Jul 2022 15:40:43 +0200 Dr Eberhard Lisse <nospam at lisse.NA> ?????:> 1 9. Jul 2022 at 11:39 > 2 10. Jul 2022 at 01:58Don't know about lubridate, but the following seems to work: 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' ) (Use Sys.getlocale() and on.exit() to restore the previous locale state if you need it.) -- Best regards, Ivan
Does this do the trick?
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 Wed, Jul 13, 2022 at 9:41 AM Dr Eberhard Lisse <nospam at lisse.na>
wrote:>
>
> 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
>
> --
> To email me replace 'nospam' with 'el'
> ______________________________________________
> R-help at 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.
--
Ben Tupper (he/him)
Bigelow Laboratory for Ocean Science
East Boothbay, Maine
http://www.bigelow.org/
https://eco.bigelow.org
Hello,
With lubridate, note in what sequence your datetime elements occur and
use the appropriate function.
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"
Hope this helps,
Rui Barradas
?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
>