将 "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
)重新格式化为一个时间变量。
我认为第一步是创建代码,根据某些规则将其分解为两个变量。我在想,也许我可以将 "space" 之前的所有内容分开到 Date
变量中,然后将 "space" 之后的所有内容分开到 Time
变量中。我无法弄清楚这一点。
然后,我正在寻找将 Date
从“string”变量更改为“[=34=”的代码]date" 类型变量。我不确定这是否正确,但我在想:
better_date <- as.Date(Date, "%m/%d/%Y")
最后,我想将Time
变量更改为"time" 类型格式(如果存在)。也不知道如何做这部分,但是表示小时和分钟的东西。这部分不如获取日期变量重要。
两种立竿见影的方式:
strsplit()
上白space
正确的方法:解析,然后格式化回来。
只有 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)中收集数据,然后逐列添加。
我是一名博士生(没有 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
)重新格式化为一个时间变量。
我认为第一步是创建代码,根据某些规则将其分解为两个变量。我在想,也许我可以将 "space" 之前的所有内容分开到
Date
变量中,然后将 "space" 之后的所有内容分开到Time
变量中。我无法弄清楚这一点。然后,我正在寻找将
Date
从“string”变量更改为“[=34=”的代码]date" 类型变量。我不确定这是否正确,但我在想:better_date <- as.Date(Date, "%m/%d/%Y")
最后,我想将
Time
变量更改为"time" 类型格式(如果存在)。也不知道如何做这部分,但是表示小时和分钟的东西。这部分不如获取日期变量重要。
两种立竿见影的方式:
strsplit()
上白space正确的方法:解析,然后格式化回来。
只有 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)中收集数据,然后逐列添加。