[R] Newbie: Drawing fitted lines on subset of data

Kevin Zembower kev|n @end|ng |rom zembower@org
Tue May 16 19:30:41 CEST 2023


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 using 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
> 




More information about the R-help mailing list