将 "date & time variable" 重新编码为两个单独的变量

Recode "date & time variable" into two separate variables

我是一名博士生(没有 R 经验),我正在尝试将一个名为 RecordedDate 的字符串变量重新编码为两个单独的变量:一个 Date 变量和一个Time 变量。我正在使用 RStudio。

值的示例是:

8/6/2018 18:56
7/26/2018 10:43
7/28/2018 8:36  

我希望您将值的第一部分(示例:08/6/2018)重新格式化为日期变量,并将值的第二部分(示例:18:56)重新格式化为一个时间变量。

  1. 我认为第一步是创建代码,根据某些规则将其分解为两个变量。我在想,也许我可以将 "space" 之前的所有内容分开到 Date 变量中,然后将 "space" 之后的所有内容分开到 Time 变量中。我无法弄清楚这一点。

  2. 然后,我正在寻找将 Date 从“string”变量更改为“[=34=”的代码]date" 类型变量。我不确定这是否正确,但我在想: better_date <- as.Date(Date, "%m/%d/%Y")

  3. 最后,我想将Time 变量更改为"time" 类型格式(如果存在)。也不知道如何做这部分,但是表示小时和分钟的东西。这部分不如获取日期变量重要。

两种立竿见影的方式:

  1. strsplit()上白space

  2. 正确的方法:解析,然后格式化回来。

只有 2. 可以保证您不会以第 27 小时或第 83 分钟结束...

示例:

R> data <- c("8/6/2018 18:56", "7/26/2018 10:43", "7/28/2018 8:36")
R> strsplit(data, " ")
[[1]]
[1] "8/6/2018" "18:56"   

[[2]]
[1] "7/26/2018" "10:43"    

[[3]]
[1] "7/28/2018" "8:36"     

R> 

并且:

R> data <- c("8/6/2018 18:56", "7/26/2018 10:43", "7/28/2018 8:36")
R> df <- data.frame(data)
R> df$pt <- anytime::anytime(df$data)   ## anytime package used
R> df$time <- format(df$pt, "%H:%M")
R> df$day <- format(df$pt, "%Y-%m-%d")
R> df
             data                  pt  time        day
1  8/6/2018 18:56 2018-08-06 18:56:00 18:56 2018-08-06
2 7/26/2018 10:43 2018-07-26 10:43:00 10:43 2018-07-26
3  7/28/2018 8:36 2018-07-28 00:00:00 00:00 2018-07-28
R> 

我经常在data.frame(或data.table)中收集数据,然后逐列添加。