Даты в формате dttm отображаются в странном формате при отображении в DT :: datatable - PullRequest
2 голосов
/ 13 марта 2020

У меня есть датафрейм, загруженный csv, который выглядит следующим образом:

A tibble: 5 x 8
     ID EventType   EventDate           EventValue          EventValueExt1 EventValueExt2 EventValueExt3 EventValueExt4
  <dbl> <chr>       <dttm>              <chr>                        <dbl>          <dbl>          <dbl>          <dbl>
1 12340 steps       2019-11-26 21:18:00 3017                          NA               NA           NA               NA
2 12339 steps       2019-11-25 14:23:00 3016                          NA               NA           NA               NA
3 12338 steps       2019-11-25 14:00:00 3015                          NA               NA           NA               NA
4 12337 geo_logging 2019-11-22 19:10:00 40.748498,-73.9933~           16.4              0           16.8              0
5 12336 geo_logging 2019-11-22 19:09:00 40.7484843,-73.993~           22.2              0           16.8              0

Затем я пытаюсь создать DT::datatable с: datatable(device1_report1583417393205)

и получаю: enter image description here

Как вы можете видеть, у моего datetime странный формат. Я пытаюсь

class(device1_report1583417393205$EventDate)
[1] "POSIXct" "POSIXt"

, а затем я пытаюсь:

library(lubridate)
library(chron)
device1_report1583417393205$EventDate <- ymd_hms(device1_report1583417393205$EventDate)
chron(dates = format(device1_report1583417393205$EventDate, '%Y-%m-%d'), time = format(device1_report1583417393205$EventDate, "%H:%M:%S"), 
      format = c('y-m-d', 'h:m:s'))

, но все равно получаю тот же результат в моем DT. Я также пытался сделать их факторами, но все же. Любые идеи?

РЕДАКТИРОВАТЬ: ВОСПРОИЗВОДИМЫЙ ПРИМЕР

require(lubridate)
require(dplyr)

df = data.frame(timestring = c("2015-12-12 13:34:56", "2015-12-14 16:23:32"),
                localzone = c("America/Los_Angeles", "America/New_York"), stringsAsFactors = F)

df$moment = as.POSIXct(df$timestring, format="%Y-%m-%d %H:%M:%S", tz="UTC")

df = df %>% rowwise() %>% mutate(localtime = force_tz(moment, localzone))

df
DT::datatable(df)
...