2014-08-27 2 views
-3

HI Все у меня есть фрейм данных с целым рядом факторов, а затем целый ряд числовых полейR ggplot2 агрегация

Данные выглядит следующим образом

Date Source Device Sessions 2014-05-01 Email Desktop 245 2014-05-01 Facebook Desktop 132 2014-05-01 (not set) Desktop 1143 2014-05-01 Email Mobile 72 2014-05-01 Facebook Mobile 96 2014-05-02 Email Desktop 187 2014-05-02 Email Mobile 32 2014-05-02 Facebook Desktop 110

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

Мне также очень хотелось бы создать диаграмму, использующую переменную устройства, для создания строки для каждого значения в столбце (например, строка, суммирующая сеансы для рабочего стола, и строка, суммирующая сеансы для мобильные телефоны), все еще использующие дату в качестве оси x.

Заранее спасибо

+0

@ Dan: ваша обратная связь будет оценена. – rnso

ответ

0

Try:

> tt2 = with(ddf, tapply(Sessions, list(Date,Device), sum)) 
> data.frame(tt2) 
      Desktop Mobile 
2014-05-01 1520 168 
2014-05-02  297  32 
> 
> dd2 = data.frame(tt2) 
> 
> dd2 
      Desktop Mobile 
2014-05-01 1520 168 
2014-05-02  297  32 
> 
> 
> 
> dd2$date = rownames(dd2) 
> dd2 
      Desktop Mobile  date 
2014-05-01 1520 168 2014-05-01 
2014-05-02  297  32 2014-05-02 
> 
> 
> 
> dd2m = melt(dd2, id='date') 
> 
> dd2m 
     date variable value 
1 2014-05-01 Desktop 1520 
2 2014-05-02 Desktop 297 
3 2014-05-01 Mobile 168 
4 2014-05-02 Mobile 32 
> 
ggplot(dd2m, aes(x=date, y=value, group=variable, color=variable))+geom_point()+geom_line() 

> 

enter image description here

+0

Спасибо за ответ @mso, это вызвало некоторые мысли для меня, что заставило меня подумать, что для того, чтобы построить то, что я хочу, мне нужно будет объединить свои данные по дате перед графикой. С этой целью я подозреваю, что ваш ответ, пока он добирается, немного длинный. То, с чем я пошел, было: 'датированный <- aggregate (session ~ date, FUN = sum, data = df); ggplot (farf, aes (x = дата, y = сеансы)) + geom_line() + geom_point() ' – Dan

Смежные вопросы