如何将 "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