将 mdy_hms AM/PM off excel 读入 r

Reading mdy_hms AM/PM off excel into r

我正在使用 dplyr 和 lubridate。

我正在使用 read_excel 将 data.frame 从 excel 导出到 R。在 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 数据点进行比较。

另一个目标是找到此列中的最大和最小数据点。

提前致谢

我建议您尽可能长时间地以日期或日期时间格式保存所有时间线数据,以便进行计算和排序。根据我的经验,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