read_csv 可以解析 m/d/YH:M:S AM/PM 向量吗?

Ern*_*rez 2 datetime r tidyverse

我正在学习 tidyverse 原则,想知道是否有更简单/更好的方法来引入我的数据,其中包括 am/d/YH:M:S AM/PM 格式的日期时间向量。目前我用 导入read_csv,它以字符格式识别列,然后我使用 ludridate 创建一个新列,mdy_hms用于解析日期时间列:

> test <- read_csv("data.csv")
Parsed with column specification:
cols(
  ActivityMinute = col_character(),
  Steps = col_integer()
)
> head(test)         
# A tibble: 6 x 2
     ActivityMinute Steps
              <chr> <int>
1 5/12/2016 12:00:00 AM     0
2 5/12/2016 12:01:00 AM     0
3 5/12/2016 12:02:00 AM     0
4 5/12/2016 12:03:00 AM     0
5 5/12/2016 12:04:00 AM     0
6 5/12/2016 12:05:00 AM     0

> test$datetime <- mdy_hms(test$ActivityMinute)
> head(test)
# A tibble: 6 x 3
     ActivityMinute Steps            datetime
              <chr> <int>              <dttm>
1 5/12/2016 12:00:00 AM     0 2016-05-12 00:00:00
2 5/12/2016 12:01:00 AM     0 2016-05-12 00:01:00
3 5/12/2016 12:02:00 AM     0 2016-05-12 00:02:00
4 5/12/2016 12:03:00 AM     0 2016-05-12 00:03:00
5 5/12/2016 12:04:00 AM     0 2016-05-12 00:04:00
6 5/12/2016 12:05:00 AM     0 2016-05-12 00:05:00
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,也许使用 cols()?我尝试指定ActivityMinuteas col_datetime,但这没有用。任何有关更好的代码/过程的提示表示赞赏。

Sra*_*ffa 5

您必须在col_datetime通话中设置日期时间格式:

test <- 
 read_csv(
  "data.csv", 
   col_types = cols(
    ActivityMinute = col_datetime("%m/%d/%Y %I:%M:%S %p"), 
    Steps = col_integer()
   )
  )
Run Code Online (Sandbox Code Playgroud)

  • 对于 12 小时制,您需要 `%I:%M:%S %p`,而不是 `%H`,后者是 24 小时制。 (2认同)