将日期转换为数据框中的字符

时间:2017-11-05 08:09:53

标签: r

我想将日期列(Date,POSIXct,POSIXt)转换为数据框中的字符列。例如,我有这个数据框。

df <- data.frame(date = Sys.Date(), time = Sys.time(), val = 1)

我可以轻松地使用这样的手动方式将日期列转换为字符列。

df$date <- as.character(df$date)
df$time <- as.character(df$time)

有没有什么方法可以在不指定日期列的情况下逐个转换它们?如何使用lapplysapply函数转换它们?

1 个答案:

答案 0 :(得分:2)

首先,使用各种数据类型制作更完整的示例。然后,确定哪些属于班级DatePOSIXt。最后,修改一下感兴趣的内容。

df <- data.frame(date = Sys.Date(), time = Sys.time(), x = 1, A = "Test")

inx <- sapply(df, function(x) inherits(x, "Date") || inherits(x, "POSIXt"))
df[inx] <- lapply(df[inx], as.character)
str(df)
#'data.frame':   1 obs. of  4 variables:
# $ date: chr "2017-11-05"
# $ time: chr "2017-11-05 08:30:19"
# $ x   : num 1
# $ A   : Factor w/ 1 level "Test": 1

请注意,POSIXctPOSIXlt等其他日期/时间类都从类POSIXt继承,因此您只需测试后者。