如何将日期时间(char)列转换为数据帧中同一列中的日期时间格式

时间:2020-08-12 19:07:49

标签: r dataframe date

new_date 列下面的示例中,其格式为预期格式,在 date 列中的格式为chr格式,日期以数字形式存储在其中。 有没有一种方法可以在不创建新列的情况下将日期时间(char)转换为日期时间格式?

df <- data.frame(id = c(1,2),
                 date = c("2013-09-15T00:00:00Z", "2014-09-13T00:00:00Z"), stringsAsFactors = F)

is.convertible.to.date <- function(x) !is.na(as.Date(as.character(x), tz = Sys.timezone(), format = '%Y-%m-%dT%H:%M:%SZ'))

str(df)

“ data.frame”:2磅。的2个变量:
id:num 1 2
日期:chr“ 2013-09-15T00:00:00Z”“ 2014-09-13T00:00:00Z”

DF_date <- sapply(df, is.convertible.to.date)
df$new_date <- as.Date(df[DF_date])
str(df)    

“ data.frame”:2磅。 3个变量中:
id:num 1 2
date:chr“ 2013-09-15T00:00:00Z”“ 2014-09-13T00:00:00Z”
new_date:日期,格式:“ 2013-09-15”“ 2014-09-13”

DF_date <- sapply(df, is.convertible.to.date)
df[DF_date] <- as.Date(df[DF_date])

str(df)

“ data.frame”:2磅。 3个变量中:
id:num 1 2
日期:chr“ 15963”“ 16326”
new_date:日期,格式:“ 2013-09-15”“ 2014-09-13”

1 个答案:

答案 0 :(得分:0)

您可以使用lubridate软件包。

library(lubridate)
df <- data.frame(id = c(1,2),
                 date = c("2013-09-15T01:00:00Z", "2014-09-13T00:00:00Z"), stringsAsFactors = F)

df$date <- ymd_hms(df$date)
str(df)
# 'data.frame': 2 obs. of  2 variables:
# $ id  : num  1 2
# $ date: POSIXct, format: "2013-09-15 01:00:00" "2014-09-13 00:00:00"

我从2013-09-15T00:00:00Z更改为2013-09-15T01:00:00Z,所以您很容易看到它。