我想将日期列(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)
有什么方法可以将它们整体转换而无需一一指定日期列?我如何使用lapply
或sapply
函数转换它们?
首先,做一个更完整的例子,混合数据类型。然后,确定哪些是 classDate
或POSIXt
。最后,只修改感兴趣的那些。
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
请注意,其他日期/时间类(例如POSIXct
和 )POSIXlt
都继承自类,POSIXt
因此您只需测试后者。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句