Чтение mdy_hms AM / PM с Excel в R - PullRequest
       11

Чтение mdy_hms AM / PM с Excel в R

0 голосов
/ 08 сентября 2018

Я использую dplyr и lubridate.

Я использую read_excel для экспорта data.frame в R из Excel. В Excel у меня есть столбец, который состоит из mdy_hms AM или PM. В R мой код состоит из:

df$dateTimeEtc

И это печатается в качестве примера:

"2017-03-07 11:10:37 UTC" "2017-03-22 10:04:42 UTC" "2017-03-08 09:36:49 UTC"

Однако я попытался использовать:

df <- df %>% 
  mutate(dateTimeEtc = mdy_hms(dateTimeEtc))

Так что R распознает эти точки данных в формате mdy_hms (не уверен, что делать, чтобы включить AM / PM). Однако эта строка кода преобразует все мои точки данных в NA. В идеале я бы предпочел, чтобы R считывал эти точки данных ТОЛЬКО mdy, чтобы я мог сравнивать их с другими точками данных mdy.

Другая цель - найти максимальные и минимальные точки данных в этом столбце.

Заранее спасибо

1 Ответ

0 голосов
/ 08 сентября 2018

Я бы посоветовал вам хранить все данные на временной шкале в формате даты или даты и времени как можно дольше, чтобы включить вычисления и сортировку. По моему опыту, mdy имеет больше смысла в качестве выбора форматирования на последнем шаге, поскольку R вообще не видит данные mdy как даты, а скорее как строки символов. Таким образом, вы получите неожиданные результаты, если попытаетесь что-то вычислить в mdy или визуализировать это.

library(dplyr); library(lubridate)
df = data_frame(dateTimeEtc = c("2017-03-07 11:10:37 UTC", 
                    "2017-03-22 18:04:42 UTC", 
                    "2017-03-08 09:36:49 UTC"))

df
#> # A tibble: 3 x 1
#>   dateTimeEtc            
#>   <chr>                  
#> 1 2017-03-07 11:10:37 UTC
#> 2 2017-03-22 18:04:42 UTC
#> 3 2017-03-08 09:36:49 UTC


# Convert character to datetime POSIXct (if not already that format),
#  then make a character string in mdy format and 12 hour clock. 
df2 <- df %>% 
  mutate(dateTimeEtc2 = ymd_hms(dateTimeEtc),
         as_mdy = format(dateTimeEtc2, '%m/%d/%Y %I:%M:%S %p'))
df2
#> # A tibble: 3 x 3
#>   dateTimeEtc             dateTimeEtc2        as_mdy                
#>   <chr>                   <dttm>              <chr>                 
#> 1 2017-03-07 11:10:37 UTC 2017-03-07 11:10:37 03/07/2017 11:10:37 AM
#> 2 2017-03-22 18:04:42 UTC 2017-03-22 18:04:42 03/22/2017 06:04:42 PM
#> 3 2017-03-08 09:36:49 UTC 2017-03-08 09:36:49 03/08/2017 09:36:49 AM
...