Как мне создать гистограмму уже внесенных в таблицу данных?

#r

#r

Вопрос:

У меня есть входные данные с очень большим количеством наблюдений в день. Я могу сделать barplot то, что хочу, за 1 день, используя table() .

Если я пытаюсь загрузить более 1 дня и вызываю table() , у меня заканчивается память.

Я пытаюсь использовать table() каждый день и объединять таблицы в итоговые значения, которые я смогу barplot позже. Но я просто не могу понять, как использовать уже table общие данные и столбчатую диаграмму каждый день в виде сложенного столбца.

После зацикливания и консолидации я получаю что-то вроде этого: 2 дня наблюдений. ( Freq столбец используется по умолчанию для предыдущих table() вызовов)

Каков наилучший способ создания столбчатой диаграммы с накоплением, когда мои данные заканчиваются таким образом?

 > data.frame(CLIENT=c("Mr Fluffy","Peppa Pig","Mr Fluffy","Dr Who"), Freq=c(18414000,9000000,7000000,15000000), DAY=c("2011-11-03","2011-11-03","2011-11-04","2011-11-04"))
     CLIENT     Freq        DAY
1 Mr Fluffy 18414000 2011-11-03
2 Peppa Pig  9000000 2011-11-03
3 Mr Fluffy  7000000 2011-11-04
4    Dr Who 15000000 2011-11-04
>
> # What should I put here?
  

Ответ №1:

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

 wide <- reshape(dat, idvar="CLIENT", timevar="DAY", direction="wide")
barplot(as.matrix(wide[-1]), beside=FALSE)
  

В качестве альтернативы, используя ggplot2 :

 library("ggplot2")

ggplot(dat, aes(x=DAY, y=Freq))  
  geom_bar(aes(fill=CLIENT), position="stack")
  

Комментарии:

1. Спасибо, Брайан, за ваш ответ. Существует небольшая проблема с выводом гистограммы, заключающаяся в том, что NA значения, генерируемые путем reshape , портят конечное barplot представление. Я исправил это, вставив 0 вместо этого. например wide[is.na(wide)] <- 0 . КСТАТИ, я искал гистограмму (хотя спасибо за ggplot2), потому что я обнаружил, что у ggplot2 заканчивается память на некоторых разных графиках одних и тех же данных: (

Ответ №2:

Попробуйте ggplot2:

 ggplot(df,aes(DAY,fill=CLIENT,weight=Freq)) geom_bar()
  

Бесстыдно вырвано отсюда:

http://had.co.nz/ggplot2/geom_bar.html

Комментарии:

1. ggplot2 не хватает памяти для моего большого набора данных (наносекундные выборки)