我想清理日期字符串,它有这种形式
> print(date)
[1] " 29-12-2014 06:37 UTC"
我只需要29-12-2014
答案 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"))