сгруппировать по двум столбцам в ggplot2 - PullRequest
76 голосов
/ 02 апреля 2012

Можно ли сгруппировать по двум столбцам?Таким образом, перекрестное произведение рисуется geom_point() и geom_smooth()?

Как пример:

frame <- data.frame(series <- rep(c('a', 'b'), 6), sample <- rep(c('glass',
'water', 'metal'), 4), data <- c(1:12))

ggplot(frame, aes()) # ...

Так, что точки 6 и 12 разделяют группу, но нес 3.

Ответы [ 3 ]

130 голосов
/ 03 сентября 2013

Взяв пример из этого вопроса , используя interaction для объединения двух столбцов в новый коэффициент:

# Data frame with two continuous variables and two factors 
set.seed(0)
x <- rep(1:10, 4)
y <- c(rep(1:10, 2)+rnorm(20)/5, rep(6:15, 2) + rnorm(20)/5)
treatment <- gl(2, 20, 40, labels=letters[1:2])
replicate <- gl(2, 10, 40)
d <- data.frame(x=x, y=y, treatment=treatment, replicate=replicate)

ggplot(d, aes(x=x, y=y, colour=treatment, shape = replicate,
  group=interaction(treatment, replicate))) + 
  geom_point() + geom_line()

ggplot example

57 голосов
/ 02 августа 2012

например:

 qplot(round, price, data=firm, group=id, color=id, geom='line') +  
      geom_smooth(aes(group=interaction(size, type)))
26 голосов
/ 02 апреля 2012

Почему бы не просто paste эти два столбца вместе и использовать эту переменную в качестве группы?

frame$grp <- paste(frame[,1],frame[,2])

Несколько более формальный способ сделать это - использовать функцию interaction.

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