【问题标题】:convert time to date format in R在R中将时间转换为日期格式
【发布时间】:2016-02-26 18:03:33
【问题描述】:

我正在尝试将变量的类从“时间”更改为“日期”。我要更改的列是由 ROracle 包执行的 Oracle 查询的结果。

该列的格式为“YYYY-MM-DD”,但该类不是日期...当我尝试使用函数 as.Date(min_date, format = '%Y-%m-%d') 将其更改为日期时,控制台返回以下错误:

charToDate(x) 中的错误:字符串不在标准中 明确的格式

min_date <- structure(c(1335909600, 1336946400, 1336514400, 1336514400, 1335045600), class = c("POSIXct", "POSIXt"))

【问题讨论】:

  • 你能dput你的数据吗?
  • 它是一个大向量,但这里是它的一部分: structure(c(1335909600, 1336946400, 1336514400, 1336514400, 1335045600, ....) class= c("POSIXct", "POSIXt ")) 重建它看起来像这样“2012-08-29 CEST”
  • 有了你的数据,我没有得到错误。您确定您发布的样本返回错误吗?
  • 我试过` as.Date("2012-08-29 CEST", format="%Y-%m-%d"). And gave "2012-08-29"。跨度>

标签: r date time


【解决方案1】:
min_date <- structure(c(1335909600, 1336946400, 1336514400, 1336514400, 1335045600), class = c("POSIXct", "POSIXt"))
min_date <- as.Date(min_date)
class(min_date)

返回“日期”

【讨论】:

    【解决方案2】:

    感谢你们的 cmets,通过阅读你们的 cmets,我意识到 as.Date 应该在我正在做的 select 语句之外完成(忘了提,抱歉)

    这是原始代码:

    temp <- select(data, name,as.Date(MIN_DATE, format = "%Y-%m-%d")%>%
      group_by(name)%>%
      summarise(MIN_DATE = min(MIN_DATE))%>%
      arrange(MIN_DATE)
    

    这就是解决方案

    temp <- select(data, name,MIN_DATE)%>%
      group_by(name)%>%
      summarise(MIN_DATE = min(MIN_DATE))%>%
      arrange(MIN_DATE)
    
    temp$MIN_DATE<- as.Date(temp$MIN_DATE, format = '%Y-%m-%d')
    

    希望这对使用 dplyr 的其他人有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多