簡體   English   中英

R中一系列日期中最后一次觀察月份的順序

[英]Sequence of last observation of months in a series of dates in R

如果我有一個范圍為2010-01-042014-12-31工作日日期,如何創建包含數據中每個月的最后日期的日期向量?

我查看了動物園和潤滑包裝,但找不到任何相關的內容。

這是完成工作的兩步過程:

  1. 使用lubridate::ceiling_date獲取下個月的第一天
  2. 我們生成一個“按月”序列並減去1天

# generage some random dates
set.seed(123)
mydates <- sample(seq(from = as.Date("2017-01-01"), 
                      to   = as.Date("2018-12-31"), by="day"), 10)

# generate requested sequence
d1 <- lubridate::ceiling_date(min(mydates), "month")
d2 <- lubridate::ceiling_date(max(mydates), "month")

result <- seq(from=d1, to=d2, by="month") - 1

目前尚不清楚您是要兩個日期的所有月末加上它們之間的所有月份,還是只想兩個日期,但是下面我們都顯示了兩者。

1)這是使用yearmon類的yearmon並給出了從第一個日期到第二個日期的所有月末。 將每個輸入的字符串轉換為yearmon類,創建它們的序列,然后使用等於1(表示每月的最后一天)的frac轉換為Date類。

library(zoo)
as.Date(seq(as.yearmon("2010-01-04"), as.yearmon("2014-12-31"), 1/12), frac = 1)

贈送:

[1] "2010-01-31" "2010-02-28" "2010-03-31" "2010-04-30" "2010-05-31"
[6] "2010-06-30" "2010-07-31" "2010-08-31" "2010-09-30" "2010-10-31"
[11] "2010-11-30" "2010-12-31" "2011-01-31" "2011-02-28" "2011-03-31"
[16] "2011-04-30" "2011-05-31" "2011-06-30" "2011-07-31" "2011-08-31"
[21] "2011-09-30" "2011-10-31" "2011-11-30" "2011-12-31" "2012-01-31"
[26] "2012-02-29" "2012-03-31" "2012-04-30" "2012-05-31" "2012-06-30"
[31] "2012-07-31" "2012-08-31" "2012-09-30" "2012-10-31" "2012-11-30"
[36] "2012-12-31" "2013-01-31" "2013-02-28" "2013-03-31" "2013-04-30"
[41] "2013-05-31" "2013-06-30" "2013-07-31" "2013-08-31" "2013-09-30"
[46] "2013-10-31" "2013-11-30" "2013-12-31" "2014-01-31" "2014-02-28"
[51] "2014-03-31" "2014-04-30" "2014-05-31" "2014-06-30" "2014-07-31"
[56] "2014-08-31" "2014-09-30" "2014-10-31" "2014-11-30" "2014-12-31"

2)或如果您只是想為每個輸入日期指定對應的月末,則這里是一線的:

library(zoo)

x <- c("2010-01-04", "2014-12-31") # input data
as.Date(as.yearmon(x), frac = 1)

贈送:

[1] "2010-01-31" "2014-12-31"

2a)要在沒有任何軟件包的情況下執行此操作,請首先定義“月初”功能,然后如圖所示應用兩次。

fom <- function(x) as.Date(cut(as.Date(x), "month"))
fom(fom(x) + 31) - 1

贈送:

[1] "2010-01-31" "2014-12-31"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM