【问题标题】:R string vector seqR字符串向量序列
【发布时间】:2017-02-02 11:00:50
【问题描述】:

这是我的目标输出,z 将提供我的带有 x 轴的图。

z<-c("2014-01", "", "", "2014-04", "", "", "2014-07", "", "","2014-10", "", "", "2015-01")

情节将每月生成一次,我的目标是自动创建轴。 2015-01 是我最后一个可用的数据点,该图将显示从 2014-01 开始的 1 年跨度。下一次更新会让我想将情节设置为 2015-02 到 2014-02。

可以看出,轴的标签以 3 个月的步长返回,中间的刻度为空。

我可以通过只提供最新的标签 2015-02 来自动化这个过程,而其余的会被 R 以某种方式扣除吗?

我在想也许将我的起点 2015-01 转换为日期格式并将其排序回 2014-01。然后再次使其成为一个字符并将其用作轴...

myz <- as.Date(c("2014-01", "2015-01"), "%Y - %m")

但是 myz 是空的。而且空勾的问题还远未解决。

有什么建议吗?

【问题讨论】:

  • 您可能想查看ggplot2,它的scale_x_date 参数采用date_breaks 参数。例如,此参数可以设置为“3 个月”。
  • as.Date 需要一天,所以粘贴一个.. rng &lt;- as.Date(paste(c("2014-01", "2015-01"), "-01"), "%Y - %m -%d") ,您可以使用 seqformat ... format(seq(rng[1], rng[2], "3 months"), "%Y-%m")
  • @user20650 - 如果不是显示日期字符串之间的空刻度,这将起作用。有没有办法将format(seq(rng[1], rng[2], "3 months"), "%Y-%m") 定义为在输出的每个日期之间显示“”、“”?就像format(seq(rng[1], "", "" rng[2], "3 months"), "%Y-%m")@Haboryme:我会调查它。不确定我是否可以将我的情节转换为 ggplots 语法...

标签: r plot axis seq as.date


【解决方案1】:

这可能会更有效,但这里有一个解决方案:

version <- "201701"
endDate = as.Date(paste0(version,"01"), "%Y%m%d")

startDateString = paste0(as.integer(substr(version, 1, 4)) - 3, substr(version, 5, 6))
startDate = as.Date(paste0(startDateString,"01"), "%Y%m%d")

rngx <- format(seq(startDate, endDate, "3 months"), "%Y-%m")


output = c()
for(i in 1:(length(rngx)-1)) {
  output = c(output, rngx[i], "", "")
}
output = c(output, rngx[length(rngx)])

version &lt;- "201701" 标记开始日期(也用于脚本中的其他部分,例如setwd()

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 2018-12-08
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    相关资源
    最近更新 更多