Yep, that did it. I didn't know that you could have pipelines within pipelines. Thanks, again, for all your help. -Kevin On 5/16/23 11:44, Rui Barradas wrote:> ?s 15:29 de 16/05/2023, Kevin Zembower via R-help escreveu: >> Hello, >> >> I's still working with my tsibble of weight data for the last 20 years. >> In addition to drawing an overall trend line, using lm, for the whole >> data set, I'd like to draw short lines that would recompute lm and draw >> it, say, just for the years from 2010:2015. >> >> Here's a short example that I think illustrates what I'm trying to do. >> The commented out sections show what I've tried to far: >> >> ## Short example to test segments: >> >> w <- tsibble( >> ????? date = as.Date("2022-01-01") + 0:99, >> ????? value = rnorm(100) >> ) >> >> ggplot(data = w, mapping = aes(date, value)) + >> ????? geom_smooth(method = "lm", se = FALSE) + >> ????? geom_point() >> ????? ## Below gives error about ignoring data >> ????? ## geom_abline( data = w$date[25:75] ) >> ????? ## Gives error ''data' must be in <data.frame>' >> ????? ## geom_smooth(data = w$date[25:35], >> ????? ##???????????? method = lm, >> ????? ##???????????? color = "black", >> ????? ##???????????? se = FALSE) >> >> I'm thinking that this is probably easily done, but I'm struggling with >> how to subset the data in the middle of the pipeline. >> >> Thanks for any advice and help. >> >> -Kevin >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > Hello, > > Try the following. > In the 2nd geom_smooth you need a subset of the data not of just one of > its columns. > > > > suppressPackageStartupMessages({ > ? library(tsibble) > ? library(dplyr) > ? library(ggplot2) > ? library(lubridate) > }) > > ggplot(data = w, mapping = aes(date, value)) + > ? geom_smooth(formula = y ~ x, method = "lm", se = FALSE) + > ? geom_point() + > ? geom_smooth( > ??? data = w %>% filter(year(date) >= 2010, year(date) <= 2015), > ??? mapping = aes(date, value), > ??? formula = y ~ x, > ??? method = lm, > ??? color = "black", > ??? se = FALSE > ? ) > > > Other ways to subset the data are > > > # dplyr > data = w %>% filter(year(date) %in% 2010:2015) > # base R > data = subset(w, year(date) %in% 2010:2015) > > > Hope this helps, > > Rui Barradas >