如何将 "char" 列转换为大型数据集中的日期时间列
How to convert a "char" column to datetime column in large datasets
我正在处理大型数据集,其中一列表示为 char 数据类型而不是 DateTime 数据类型。我尝试转换但我无法转换它。
你能就这个问题提出一些建议吗?这对我很有帮助
提前致谢
我现在正在使用的代码
c_data$dt_1 <- lubridate::parse_date_time(c_data$started_at,"ymd HMS")
获取输出:
2027- 05- 20 20:10:03
但期望的输出是
2020-05-20 10:03
在 R 中,日期和时间具有单一格式。您可以将其格式更改为您需要的格式,但它将是字符类型。
如果您想以 year-month-day min-sec
格式保存数据,您可以使用 format
作为 -
format(Sys.time(), '%Y-%m-%d %M:%S')
#[1] "2021-08-27 17:54"
对于整个专栏,您可以将其应用为 -
c_data$dt_2 <- format(c_data$dt_1, '%Y-%m-%d %M:%S')
阅读 ?strptime
了解不同的格式选项。
这是使用 lubridate
的另一种方法:
library(lubridate)
df <- tibble(start_at = c("27/05/2020 10:03", "25/05/2020 10:47"))
df %>%
mutate(start_at = dmy_hms(start_at))
# A tibble: 2 x 1
start_at
<dttm>
1 2020-05-27 20:10:03
2 2020-05-25 20:10:47
使用anytime
library(dplyr)
library(anytime)
addFormats("%d/%m/%Y %H:%M")
df %>%
mutate(start_at = anytime(start_at))
-输出
# A tibble: 2 x 1
start_at
<dttm>
1 2020-05-27 10:03:00
2 2020-05-25 10:47:00
我正在处理大型数据集,其中一列表示为 char 数据类型而不是 DateTime 数据类型。我尝试转换但我无法转换它。
你能就这个问题提出一些建议吗?这对我很有帮助
提前致谢
我现在正在使用的代码
c_data$dt_1 <- lubridate::parse_date_time(c_data$started_at,"ymd HMS")
获取输出:
2027- 05- 20 20:10:03
但期望的输出是
2020-05-20 10:03
在 R 中,日期和时间具有单一格式。您可以将其格式更改为您需要的格式,但它将是字符类型。
如果您想以 year-month-day min-sec
格式保存数据,您可以使用 format
作为 -
format(Sys.time(), '%Y-%m-%d %M:%S')
#[1] "2021-08-27 17:54"
对于整个专栏,您可以将其应用为 -
c_data$dt_2 <- format(c_data$dt_1, '%Y-%m-%d %M:%S')
阅读 ?strptime
了解不同的格式选项。
这是使用 lubridate
的另一种方法:
library(lubridate)
df <- tibble(start_at = c("27/05/2020 10:03", "25/05/2020 10:47"))
df %>%
mutate(start_at = dmy_hms(start_at))
# A tibble: 2 x 1
start_at
<dttm>
1 2020-05-27 20:10:03
2 2020-05-25 20:10:47
使用anytime
library(dplyr)
library(anytime)
addFormats("%d/%m/%Y %H:%M")
df %>%
mutate(start_at = anytime(start_at))
-输出
# A tibble: 2 x 1
start_at
<dttm>
1 2020-05-27 10:03:00
2 2020-05-25 10:47:00