Hello all! I am very new to RStudio and I have reached a block in my data analysis.
I have already plotted bird captures over time for two age classes of birds. I have one column for date, and two columns that summarize how many birds I captured for each day for each age class (SY and ASY). From this data, I have been able to summarize it with this graph:
ggplot(data = MYWA, aes(x = DATE, y = SY))+
geom_point()+
stat_smooth(aes(x = DATE, y = SY), color="black", se= FALSE)+
geom_point(y=ASY, color="red")+
labs(y= "Number of Individuals", x = "Date", title="MYWA Spring" )+
stat_smooth(aes(x = DATE, y = ASY), color = "red", se= FALSE)+
ylim(0,11)
My next step that I am trying (and failing) to figure out is how to find the maximum y value for each line (the highest point). I saw on a few sites where someone had used smooth_vals but I have no idea which package I need to download to be able to use it!
Any help is greatly appreciated! It seems like it should be much easier than it is but I've been working on this problem for a few hours and I still have no clue!!
I don't have access to your data so I did it using the built-in example data set, mtcars.
My basic approach is to fit the smoother (LOESS) outside of ggplot and then use some dplyr to group by and select the max values.
library(tidyverse)
# Similar plot to yours
mtcars %>%
ggplot(aes(mpg, hp, group = vs, color = factor(vs))) +
geom_point() +
geom_smooth(se = FALSE)
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'
# Nest the data and fit LOESS smoothers
dd <- mtcars %>%
group_nest(vs) %>%
mutate(
loess = map(data, ~ loess(hp ~ mpg, .x)),
loess = map(loess, predict)
) %>%
unnest(c(loess, data))
# Extract max value for each group of `vs`
dd_max <- dd %>%
group_by(vs) %>%
slice_max(loess)
dd_max
#> # A tibble: 2 x 12
#> # Groups: vs [2]
#> vs mpg cyl disp hp drat wt qsec am gear carb loess
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 0 13.3 8 350 245 3.73 3.84 15.4 0 3 4 245.
#> 2 1 19.2 6 168. 123 3.92 3.44 18.3 0 4 4 118.
# Same as first plot, with lines at max values
mtcars %>%
ggplot(aes(mpg, hp, group = vs, color = factor(vs))) +
geom_point() +
geom_smooth(se = FALSE) +
geom_hline(data = dd_max, aes(yintercept = loess, color = factor(vs)))
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'
I was also wondering if there are any alternatives to the unnest function. I am trying to download the package that contains it (unnest_0.0.2.tar.gz) but I am receiving feedback that it is not compatible with my version of R for some reason.