R - melt и ggplot2, как агрегировать - PullRequest
0 голосов
/ 24 декабря 2018

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

df <- data.frame(factor1 = c("a","a","c","d","e"), factor2 = c("a1","a1","b1","a1","b1"),
                 factor3 = c("a2","b2","c2","d2","e2"), factor4 = c("a3","b3","c3","d3","e3"))
df$values <- abs(rnorm(5))

test <- melt(df, id.vars = c('factor1', 'factor2'), measure.vars = "values")
test


ggplot(test, mapping= aes(x=as.factor(`factor1`), y = value)) + 
  geom_line(group=1) +
  geom_point() +
  geom_label_repel(aes(label= round(value,2))) +
  facet_grid(`factor2` ~ .) +
  scale_y_continuous(labels = function(x) paste0(x,"%")) +
  theme_bw() + 
  theme(axis.text.x = element_text(angle = 20,hjust=1)) 

enter image description here

Теперь, как видно из графика, значение под первым фасетом повторяется дважды, для 0,1и 0,06, и это потому, что факторы 3 и 4 имеют разные значения, но одинаковые значения factor1 и factor2.

Мой вопрос заключается в том, как я могу получить его для агрегирования по тому, что я выбрал для этого?Т.е. я хочу, чтобы дублирующая точка отображалась как 0,1 + 0,06, без использования какой-либо агрегатной функции?Причина, по которой я не хочу использовать агрегатную функцию, заключается в том, что в моих данных много факторов, и я хочу иметь возможность строить графики без предварительной агрегации данных много раз.Возможно ли это?

...