R中的清洁日期字符串格式

时间:2014-12-29 07:04:16

标签: r

我想清理日期字符串,它有这种形式

> print(date)
[1] " 29-12-2014 06:37 UTC"

我只需要29-12-2014

3 个答案:

答案 0 :(得分:4)

只需使用as.Date(假设您的数据已存储为“日期”对象)。

x <- Sys.time()
x
# [1] "2014-12-29 12:35:18 IST"
as.Date(x)
# [1] "2014-12-29"

如果您的数据目前不是标准日期格式,请先使用strptime将其转换为日期格式,之后您还可以使用format

xx <- " 29-12-2014 06:37 UTC"
as.Date(strptime(xx, format = " %d-%m-%Y %H:%M", tz = "UTC"))
# [1] "2014-12-29"

## format would let you specify the order you want
format(strptime(xx, format = " %d-%m-%Y %H:%M", tz = "UTC"), format = "%d-%m-%Y")
# [1] "29-12-2014"

答案 1 :(得分:2)

假设您的字符串不是as.POSIXct格式,使用regex的选项将是

 str1 <- " 29-12-2014 06:37 UTC"
 sub('[ ]+([^ ]+) .*', '\\1', str1)
 #[1] "29-12-2014"

或使用lubridate

library(lubridate)
format(dmy_hm(str1),'%d-%m-%Y')
#[1] "29-12-2014"

这也需要multiple格式

 str2 <- c(str1, '29.12.14 06/37 UTC')
 format(dmy_hm(str2), '%d-%m-%Y')
 #[1] "29-12-2014" "29-12-2014"

答案 2 :(得分:0)

df$newdate <- 月(as.POSIXlt(df$Date, format = "%d/%m/%Y"))

df$newdate <- 月(as.POSIXlt(df$Date, format = "%d-%m-%Y"))