[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