Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:在每年1月初添加垂直线的绘图_R - Fatal编程技术网

R:在每年1月初添加垂直线的绘图

R:在每年1月初添加垂直线的绘图,r,R,我有一个从2015年到现在的工作日数据框架中的每日系列(不包括Sat、Sun): df您几乎拥有了它,您只需要一种方法来确定所有1月的第一个日期,然后将这些日期的向量传递为x abline(v=x) lubridate和dplyr提供了很好的解决方法 # fake data: a sample of dates (in order) and a cumulative series set.seed(123) n <- 200 dat <- data.frame( Date =

我有一个从2015年到现在的工作日数据框架中的每日系列(不包括Sat、Sun):


df您几乎拥有了它,您只需要一种方法来确定所有1月的第一个日期,然后将这些日期的向量传递为
x

abline(v=x)
lubridate和dplyr提供了很好的解决方法

# fake data: a sample of dates (in order) and a cumulative series
set.seed(123)
n <- 200
dat <- data.frame(
  Date = sort(sample(seq(from=as.Date('2015-01-01'), 
                         to=as.Date('2018-01-01'), 
                         by='day'),
                     n)
              ),
  y = cumsum(runif(n, min = -10, max=10)))

# load libraries and add flag for first jan dates
library(dplyr)
library(lubridate)

dat <- dat %>%
  # ensure it's sorted by date
  arrange(Date) %>%
  # group by year and month
  group_by(yr = year(Date), mth = month(Date)) %>%
  # flag each first January row
  mutate(first_jan_row = mth ==1 & row_number()==1)
结果:


请展示一个可复制的小示例,非常感谢。
# fake data: a sample of dates (in order) and a cumulative series
set.seed(123)
n <- 200
dat <- data.frame(
  Date = sort(sample(seq(from=as.Date('2015-01-01'), 
                         to=as.Date('2018-01-01'), 
                         by='day'),
                     n)
              ),
  y = cumsum(runif(n, min = -10, max=10)))

# load libraries and add flag for first jan dates
library(dplyr)
library(lubridate)

dat <- dat %>%
  # ensure it's sorted by date
  arrange(Date) %>%
  # group by year and month
  group_by(yr = year(Date), mth = month(Date)) %>%
  # flag each first January row
  mutate(first_jan_row = mth ==1 & row_number()==1)
# your plot
plot(dat$Date, dat$y, type='l')
# ablines on all first jan dates
abline(v=dat$Date[dat$first_jan_row])