【问题标题】:R - convert Date column in days since the earliest date in a dataframeR - 自数据框中最早日期以来的天数转换日期列
【发布时间】:2016-06-28 14:49:05
【问题描述】:

我需要你的帮助,感谢任何考虑我请求的人。

我想将我的数据框的日期列(class= 日期)转换为自最早观察日期以来的天数,包括从 1966 年 10 月 1 日到 2006 年 9 月 30 日。因此,每一天的观察应该有一个唯一的值,40年应该是1到14640(40 * 366)。

这是我的日期栏的一部分:

Date
17/12/1966
05/05/1968
30/10/1968
16/08/1970
07/01/1971
25/11/1971
29/09/1973
18/01/1974
17/09/1975
06/01/1976
28/11/1976
04/07/1978
15/11/1978
27/07/1980
20/09/1981
03/10/1981
11/09/1983
23/09/1984
25/10/1984
03/12/1985
07/12/1986

[...]

任何帮助都会非常感激。 谢谢

【问题讨论】:

标签: r date


【解决方案1】:

这应该可行:

library(lubridate)
ref_date <- dmy('01-10-1966')
new_date <- dmy('17/12/1966')
day_number <- as.numeric(difftime(new_date, ref_date))

编辑:

这是一个例子;要直接应用于您的数据集,请使用:

df$day_number <- as.numeric(difftime(df$Date, ref_date)) 

【讨论】:

  • 嗨,是的,它有效..但仅适用于 1966 年 12 月 17 日,因此我只有一个儒略日。如何将其扩展到整个 Date 列?谢谢
  • df$day_number
  • 没问题!乐于助人。
【解决方案2】:

Base R 有一个 Julian 函数,可以选择指定原点:

#example
date<-as.Date("2016-06-27")

#base R
result<-julian(date, origin=as.Date("1966-10-01"))
result
#[1] 18167
#attr(,"origin")
#[1] "1966-10-01"

as.numeric(result)
#18167

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    相关资源
    最近更新 更多