【问题标题】:How to convert a numeric vector into dates? [closed]如何将数字向量转换为日期? [关闭]
【发布时间】:2017-07-13 01:14:43
【问题描述】:

我需要使用“日期”将以下称为 DATE 的向量转换为日期:

DATE <- c(2015-03-20, 2015-03-23, 2015-03-24, 2015-03-25, 2015-03-26, 2015-03-27, 2015-03-30, 2015-03-31)

如果不对向量持有的每个值添加引号“”,我无法弄清楚如何将向量转换为日期:

DATE <- as.Date(c("2015-03-20", "2015-03-23", "2015-03-24", "2015-03-25", "2015-03-26", "2015-03-27", "2015-03-30", "2015-03-31"))

有没有一个叫“date”(不带大写D)的类可以自动将向量转换成日期?

谢谢!

【问题讨论】:

  • 我很好奇您是如何获得这种格式的输入的
  • 查看第一个向量的结果。它要求 R 做的是从 2015 年减去 3 和 20 等等。
  • Hmiscpackage 有一个很好的函数Cs(),它可以从不带引号的名称中创建一个字符串向量。所以,你可以试试lubridate::ymd(Hmisc::Cs(2015-03-20, 2015-03-23, 2015-03-24, 2015-03-25, 2015-03-26, 2015-03-27, 2015-03-30, 2015-03-31))

标签: r date


【解决方案1】:

我不确定最终会如何获得这种输入。实际上,输入在存储到变量之前被减去为数字 (2015 - 03 - 20 = 1992)。

您需要提供字符串输入。但是,无需将" 添加到每个单独的值。您可以将整个内容读取为一个字符串(仅在开头和结尾添加 "),然后使用 R 对其进行处理。具体而言,使用 strsplit, 处拆分字符串,然后将值转换为日期使用as.Date。阅读?strptime,了解更多关于format的信息。

DATE <- c("2015-03-20, 2015-03-23, 2015-03-24, 2015-03-25, 2015-03-26, 2015-03-27, 2015-03-30, 2015-03-31")
DATE = unlist(strsplit(DATE,", ")) #Split into individual values and convert to array
as.Date(as.character(DATE), format = "%Y-%m-%d")
[1] "2015-03-20" "2015-03-23" "2015-03-24" "2015-03-25" "2015-03-26" "2015-03-27" "2015-03-30" "2015-03-31"

【讨论】:

  • lubridate::ymd(Hmisc::Cs(2015-03-20, 2015-03-23, 2015-03-24, 2015-03-25, 2015-03-26, 2015-03-27, 2015-03-30, 2015-03-31)) 也可以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 2020-05-24
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 2013-11-12
  • 2016-02-10
相关资源
最近更新 更多