Изменить форму последней точки для каждого фактора в R - PullRequest
0 голосов
/ 23 сентября 2018

Я строю кумулятивную частоту для репродуктивного выхода 21 животного в ggplot, с последней точкой, представляющей репродуктивный выход в течение жизни при смерти.Я хочу, чтобы последняя точка отображалась в виде звезды, но у меня возникают проблемы с разделением данных.

Я нашел этот ответ: Изменить символ определенных точек данных на линейном графике, основание R

Для решения здесь требуется конкретное значение для определения значения интереса,тогда как нужна последняя запись для каждого фактора / id.

Мои данные выглядят так:

     Age Cum_Output       ID
1     3         71       1
2     9         68       2
3    10        179       2
4    11        209       2
5     1         17       3
6     2         89       3
7     6        121       3
8     7        241       3
9     8        602       3
10   10        306       3

Мой код выглядит следующим образом:

symbol <- rep(10, nrow(s3))
symbol[s3$ID[s3$Cum_Output] == last(s3$ID[s3$Cum_Output])] <- 17

ggplot(s3, aes(Age, Cum_Output)) + geom_point(shape = symbol) + 
  geom_line(aes(color = factor(ID))) + theme_bw() + xlab("Age") +
  ylab("Cumulative Reproductive Output")

1 Ответ

0 голосов
/ 23 сентября 2018

Вы можете создать логическую переменную для отметки наибольшего значения Age для каждого ID.Я делаю это на лету ниже.Сначала мы группируем по ID, затем для каждого уникального ID мы создаем логическую переменную last.value, то есть TRUE для самого высокого Age (max(Age)) и FALSE в противном случае.В ваших примерах данных выглядит, что значения Cum_Output для ID=3 не являются кумулятивными, но я использовал данные, как в приведенном ниже коде.

library(tidyverse)

s3 %>% 
  group_by(ID) %>% 
  mutate(last.value = Age == max(Age)) %>% 
  ggplot(aes(Age, Cum_Output, color = factor(ID))) + 
    geom_line() + 
    geom_point(aes(shape=last.value, size=last.value)) + 
    theme_bw() + 
    labs(x="Age", y="Cumulative Reproductive Output", colour="ID") +
    scale_shape_manual(values=c(16, 8)) +
    scale_size_manual(values=c(2,4)) +
    guides(shape=FALSE, size=FALSE)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...