读取mdy_hms AM / PM关闭excel到r

问题描述 投票:0回答:1

我正在使用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数据点进行比较。

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

提前致谢

r date dplyr format lubridate
1个回答
0
投票

我建议您尽可能长时间地保留日期或日期时间格式的所有时间轴数据,以便进行计算和排序。根据我的经验,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
© www.soinside.com 2019 - 2024. All rights reserved.