繁体   English   中英

如何使用R每6个月创建一个日期向量?

[英]How to create a date vector every 6 months using R?

我想创建一个14个月的6个月间隔向量。 目的是我必须使用PerformanceAnalytics保存一些图:更具体地说:每六个月charts.PerformanceSummary() 我只想创建一个带有日期的向量,而不是手动输入每个6个月的范围,所以我可以使用循环来简化此过程。

我希望向量以以下格式包含从01-01-2000到2014-12-31的日期:

    DATES
"200001/200006"
"200007/200012"
"200101/200106"
"200107/200112"
"200201/200206"
"200207/200212"
...
"201407/201412"

但是我不知道如何去做!

例如:

library(PerformanceAnalytics)

# Load DATA "edhec"
data(edhec)

# Now I can view the chart from "01-01-1999" to "06-30-1999"
charts.PerformanceSummary(edhec[,1]["199901/199906"])

但是,如果我有DATES向量,则可以执行以下操作:

# Save formatted dates to "DATES"
 DATES <- c("200001/200006","200007/200012")

# Plot Selected Dates only
 charts.PerformanceSummary(edhec[DATES[1]])

# OR:
charts.PerformanceSummary(edhec[DATES[2]])

任何帮助表示赞赏!!!

你可以试试

indx <- seq(as.Date('2000-01-01'), length.out=30, by='6 month')
indx2 <- seq(as.Date('2000-06-01'), length.out=30, by='6 month')
DATES <- paste(format(indx, '%Y%m'), format(indx2, '%Y%m'), sep="/")
DATES
# [1] "200001/200006" "200007/200012" "200101/200106" "200107/200112"
# [5] "200201/200206" "200207/200212" "200301/200306" "200307/200312"
# [9] "200401/200406" "200407/200412" "200501/200506" "200507/200512"
# [13] "200601/200606" "200607/200612" "200701/200706" "200707/200712"
# [17] "200801/200806" "200807/200812" "200901/200906" "200907/200912"
# [21] "201001/201006" "201007/201012" "201101/201106" "201107/201112"
# [25] "201201/201206" "201207/201212" "201301/201306" "201307/201312"
# [29] "201401/201406" "201407/201412"

或者您可以loop创建两个日期

DATES1 <- Reduce(function(...) paste(..., sep="/"),
           lapply(as.Date(c('2000-01-01', '2000-06-01')), 
            function(x) format(seq(x,length.out=30, by='6 month'), '%Y%m')))

identical(DATES, DATES1)
#[1] TRUE

这与lubridate相同

library(lubridate)
idx1 <- ymd("2000-01-01") + months(seq(from=0, length.out=30, by=6))
idx2 <- idx1 + months(5)
paste0(format(idx1, "%Y%m"), "/", format(idx2, "%Y%m"))

##  [1] "200001/200006" "200007/200012" "200101/200106" "200107/200112"
##  [5] "200201/200206" "200207/200212" "200301/200306" "200307/200312"
##  [9] "200401/200406" "200407/200412" "200501/200506" "200507/200512"
## [13] "200601/200606" "200607/200612" "200701/200706" "200707/200712"
## [17] "200801/200806" "200807/200812" "200901/200906" "200907/200912"
## [21] "201001/201006" "201007/201012" "201101/201106" "201107/201112"
## [25] "201201/201206" "201207/201212" "201301/201306" "201307/201312"
## [29] "201401/201406" "201407/201412"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM