Я пытаюсь понять, как 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](https://i.stack.imgur.com/NaL6O.png)
Теперь, как видно из графика, значение под первым фасетом повторяется дважды, для 0,1и 0,06, и это потому, что факторы 3 и 4 имеют разные значения, но одинаковые значения factor1 и factor2.
Мой вопрос заключается в том, как я могу получить его для агрегирования по тому, что я выбрал для этого?Т.е. я хочу, чтобы дублирующая точка отображалась как 0,1 + 0,06, без использования какой-либо агрегатной функции?Причина, по которой я не хочу использовать агрегатную функцию, заключается в том, что в моих данных много факторов, и я хочу иметь возможность строить графики без предварительной агрегации данных много раз.Возможно ли это?