我正在输入" a< - [12 / Dec / 2014:05:45:10]" a不是时间戳,所以不能使用任何时间和日期函数
现在我希望将上述变量分为两部分: - 日期 - > 12 / DEC / 2014 时间 - > 5时45分10秒
任何帮助将不胜感激。
答案 0 :(得分:3)
您可以使用gsub
在日期和时间之间创建空格,并使用该空格创建两列read.table
read.table(text=gsub('^\\[([^:]+):(.*)+\\]', '\\1 \\2', a),
sep="", col.names=c('Date', 'Time'))
# Date Time
# 1 12/Dec/2014 05:45:10
或者您可以使用lubridate
将其转换为'POSIXct'类
library(lubridate)
a1 <- dmy_hms(a)
a1
#[1] "2014-12-12 05:45:10 UTC"
如果我们需要两个具有指定格式的列
d1 <- data.frame(Date= format(a1, '%d/%m/%Y'), Time=format(a1, '%H:%M:%S'))
a <- "[12/Dec/2014:05:45:10]"
答案 1 :(得分:1)
<强>代码强>
a <- "[12/Dec/2014:05:45:10]"
Sys.setlocale("LC_TIME", "C") # depends on your local setting
as.POSIXlt(a, format = "[%d/%b/%Y:%H:%M:%S]")
<强>解释强>
根据您的本地设置,您需要更改它,以便可以读取缩写的月份名称。然后,您可以将as.POSIXlt
与格式字符串一起使用,以在日期中转换字符串。