【问题标题】:How to strip time from date time into DDMMYYYY from DDMMYYY:HH:MM:SS如何从 DDMMYYY:HH:MM:SS 将时间从日期时间剥离到 DDMMYYYY
【发布时间】:2018-07-27 15:46:48
【问题描述】:

我有一个数据框,其中有一列填充了日期时间。

str(df$date)
char [1:2000] "01JAN2015:12:20:00" "19JUN2015:15:30:00" "19OCT2013:05:26:00"

我想剥离时间,只留下 DDMMYYY 列,例如

01JAN2015 19JUN2015 19OCT2013

我试过df$date <- as.POSIXct(df$date),结果是

Error in as.POSIXlt.character(x, tz, ...) : 
  character string is not in a standard unambiguous format

df$date <- as.Date(df$date),输出为

Error in charToDate(x) :
  character string is not in a standard unambiguous format

我不知道我做错了什么。我将非常感谢帮助。

谢谢

【问题讨论】:

  • sub(":.*$", "", df$date) 只保留日期。然后使用参数format,函数as.Date
  • substr(df$date,1,9)as.Date(df$date,format="%d%b%Y:%H:%M:%S") 也可以。

标签: r date datetime


【解决方案1】:

使用lubridate

df$date <- as.Date(df$date, "%d%b%Y")

会给你:

[1] “2015-01-01” “2015-06-19” “2013-10-19”

希望对你有帮助

【讨论】:

  • 我刚刚尝试过,当我执行 str(df$date) 时,输出为Date[1:2000], format: NA NA NA NA NA NA NA ...
  • as.Date(c("01JAN2015:12:20:00", "19JUN2015:15:30:00", "19OCT2013:05:26:00"), "%d%b%Y") 给出[1] "2015-01-01" "2015-06-19" "2013-10-19" 所以答案适用于问题中的数据。
【解决方案2】:

这样就可以了

library(lubridate)
dates <- c("01JAN2015:12:20:00", "19JUN2015:15:30:00", "19OCT2013:05:26:00")
dates <- sub(":.*$", "", dates) %>% dmy(.) %>% gsub("-", "", .)
paste0(substr(dates, 7, 8), substr(dates, 5, 6), substr(dates, 1, 4))
# [1] "01012015" "19062015" "19102013"

【讨论】:

  • 我已经厌倦了你的建议。但是我收到了这条警告消息All formats failed to parse. No formats found 谢谢
  • @B.Choi 真奇怪。当您输入R.version 时,您会得到什么?我在 3.5.0 上,它按预期完美运行
  • 我在R version 3.5.1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
相关资源
最近更新 更多