【问题标题】:Datevalue Excel function in RR中的日期值Excel函数
【发布时间】:2019-11-06 19:34:08
【问题描述】:

我需要使用 R 计算骨骼的成熟度,我一直在寻找类似于 Excel 中的 DATEVALUE 的函数,但我没有找到类似的东西。我知道 DATEVALUE 使用 01/01/1900 到日期之间的天数,所以也许有人知道如何在 R 中执行此操作。

例如,在 Excel 中 DATEVALUE(01-01-1900)=1 和 DATEVALUE(05-01-1900)=5。我想在 R 中使用类似的函数,以获取一个日期与另一个日期之间的天数。

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。从您的描述中我不清楚您要做什么。
  • Base R 支持对Date 类的对象进行取差。 a <- as.Date("2019/01/01"); b <- as.Date("2019/01/05"); b - alubridate 库扩展了这个功能。
  • 看起来您使用的是 dd-mm-yyyy 格式。使用 yyyy-mm-dd 格式可能会让生活变得更轻松。如果没有,您将需要在as.Date 函数中使用format = %d-%m-%Y 才能正确读取。

标签: r function date


【解决方案1】:

这样的事情怎么样?

bone_df <- data.frame(date=c("2019-07-26","2019-07-25"),bone_start=c("2019-01-01","2019-01-01"))

bone_df$date_value <- as.Date(as.character(bone_df$date), format="%Y-%m-%d")-
  as.Date(as.character(bone_df$bone_start), format="%Y-%m-%d")

bone_df

        date bone_start date_value
1 2019-07-26 2019-01-01   206 days
2 2019-07-25 2019-01-01   205 days

【讨论】:

    【解决方案2】:

    相当于DATEVALUE() 将只是

    date <- as.Date("1900-01-01")
    
    as.numeric(date)
    
    # Output
    [1] -25567
    

    它给出一个负数,因为 R 日期参考是 1970-01-01。所以as.numeric(as.Date("1970-01-01")) 输出0

    如果您想要两个日期之间的天数差异:

    date1 <- as.Date("2000-01-01")
    
    date2 <- as.Date("2019-11-06")
    
    date2 - date1
    # Output: Time difference of 7249 days (class: difftime, type: double)
    
    as.numeric(date2 - date1)
    # Output: 7249
    

    查看lubridate 包,了解一组处理日期时间的好工具。

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多