【问题标题】:How to determine the correct argument for origin in as.Date, R如何在 as.Date, R 中确定正确的原点参数
【发布时间】:2014-08-10 12:21:09
【问题描述】:

我在 R 中有一个数据集,其中包含格式为 yyyy/mm/dd 的日期列。我正在尝试使用 as.Date 将这些日期转换为 R 中的日期对象。但是,我似乎找不到正确的原点参数来输入 as.Date。以下代码是我一直在尝试的示例。我正在使用 Excel 中的 CSV 文件,因此我根据我查看过的其他网站使用了 origin="1899/12/30。

> as.Date(2001/04/26, origin="1899/12/30")

 [1] "1900-01-18"

但是,这不起作用,因为输入日期 2001/04/26 返回为“1900-01-18”。我需要将日期转换为日期对象,以便将日期转换为儒略日期。

【问题讨论】:

  • 我认为您在寻找format 而不是origin,试试as.Date("2001/04/26", "%Y/%m/%d")

标签: r arguments


【解决方案1】:

as.Date 可以是数字值,也可以是字符值。当您在 R 中仅键入 2001/04/26 时,这就是进行除法并得到 19.24(一个数值)。数值需要一个原点,而您提供的数字是该原点的偏移量。所以你离你的原点还有 19 天,即“1900-01-18”。像 Apr 26 2001 这样的日期是

as.Date(40659, origin="1899-12-30")
# [1] "2011-04-26"

如果 Excel 中的日期“看起来像”日期,那么它们很可能是字符值(或因子)。要将字符值转换为带有 as.Date() 的日期,您需要指定格式。这里

as.Date("2001/04/26", format="%Y/%m/%d")
# [1] "2001-04-26"

请参阅 ?strptime 了解有关特殊 % 变量的详细信息。现在,如果您使用 read.table 或其他东西将数据读入 data.frame,那么您的变量可能是一个因素。如果是这种情况,您需要使用'转换为字符

as.Date(as.character(mydf$datecol), format="%Y/%m/%d")

【讨论】:

    猜你喜欢
    • 2012-04-28
    • 2021-08-18
    • 1970-01-01
    • 2021-11-30
    • 2014-03-06
    • 2017-10-29
    • 2015-04-06
    • 2011-12-13
    相关资源
    最近更新 更多