读取mdy_hms AM / PM关闭excel到r

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读取mdy_hms AM / PM关闭excel到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

以上是关于读取mdy_hms AM / PM关闭excel到r的主要内容,如果未能解决你的问题,请参考以下文章

to_date 函数 AM PM 格式

使用excel工作的船员成员轮换板

将 AM PM 时间字符串存储到 MySQL 中的 TIME 数据类型中,并在显示时使用 AM PM 检索?

用Perl读取Excel文件,Spreadsheet::Read.pm库介绍

Phpspreadsheet - 时间单元格检索为浮点数

上班时间 下班时间 8:30AM 5:30PM 7:30AM 10:30PM 1:30AM 10:00PM 4:30AM 12:00PM 8:00AM 5:00PM 7:00AM 1