【问题标题】:how can I convert number to date?如何将数字转换为日期?
【发布时间】:2020-10-23 16:45:53
【问题描述】:

我对 as.date 函数有疑问。 我在 excel 中有一个正常日期显示列表,但是当我在 R 中导入它时,它变成了数字,比如 33584。我知道它从特定日期开始计算。我想以“dd-mm-yy”的形式设置我的日期。

原始数据为: how the "date" variable looks like in r

我试过了:

as.date <- function(x, origin = getOption(date.origin)){
  origin <- ifelse(is.null(origin), "1900-01-01", origin)
  as.Date(date, origin)
}

也很简单 as.Date(43324, origin = "1900-01-01") 但它们都不起作用。它显示错误:不知道如何转换'。'到“日期”类

谢谢你们!

【问题讨论】:

  • (1) ifelse 在这里是错误的,使用if (is.null(origin)) origin &lt;- "1900-01-01"。 (2) 我没有收到该代码的错误。
  • 顺便说一句,处理空源的另一种方法是function(x, origin = getOption(date.origin, "1900-01-01"))
  • @r2evans,谢谢,这有帮助!但是我在将日期数字列表转换为正常日期格式时也遇到了麻烦。就像我有一个包含 100 个日期的“mydate”变量,我想将它们全部转换,但我不知道应该在何时何地引入日期来源。
  • 如果没有样本数据,我就无能为力了。请使用dput(..)data.frame(..)提供样本数据;使问题完整和可重复的良好参考:stackoverflow.com/q/5963269minimal reproducible examplestackoverflow.com/tags/r/info

标签: r


【解决方案1】:

janitor 包有一对用于处理读取 R 中的 Excel 日期的函数。有关使用示例,请参见以下链接:

janitor::excel_numeric_to_date(43324)
[1] "2018-08-12"

【讨论】:

    【解决方案2】:

    我遇到过使用readxl::read_xls() 读取的 Excel 表格,它将日期列读取为“43488”之类的字符串(尤其是当其他地方的单元格具有非日期值时)。我用

    xldate<- function(x) {
      xn <- as.numeric(x)
      x <- as.Date(xn, origin="1899-12-30")
    }
    
    d <- data.frame(date=c("43488"))
    d$actual_date <- xldate(d$date)
    print(d$actual_date)
    # [1] "2019-01-23"
    

    【讨论】:

      【解决方案3】:

      约会是出了名的烦人。我强烈推荐lubridate 包来处理它们。 https://lubridate.tidyverse.org/

      如果需要,请使用 lubridate 中的 as_date() 读取数字日期。

      您可以使用format() 将其放入dd-mm-yy。

      library(lubridate)
      
      date_vector <- as_date(c(33584, 33585), origin = lubridate::origin)
      
      formatted_date_vector <- format(date_vector, "%d-%m-%y")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多