ggvis - Как построить гистограмму

Я не знаю, что не так с моим кодом. но я получаю эту ошибку:

> Visitas_Por_Fuente %>% ggvis(~Campanas1, ~sessions) %>% layer_bars()
Error in .subset2(x, i, exact = exact) : subscript out of bounds

Я просто хочу создать гистограмму, которая показывает, сколько сеансов по источникам у нас есть.

Я использую этот код (но я не вижу графика):

у меня есть data.frame, который содержит следующие типы данных:

Visitas_Por_Fuente %>% ggvis(~Campanas1, ~sessions) %>% layer_bars()

И это вывод функции str() в моем data.frame:

Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   4177 obs. of  8 variables:
$ date         : Date, format: "2014-09-01" "2014-09-01" "2014-09-01" ...
$ dayOfWeekName: chr  "Monday" "Monday" "Monday" "Monday" ...
$ userType     : chr  "New Visitor" "New Visitor" "New Visitor" "New Visitor" ...
$ source       : chr  "(direct)" "amazon.es" "bing" "col128.mail.live.com" ...
$ Medium       : chr  "(none)" "referral" "organic" "referral" ...
$ campaign     : chr  "(not set)" "(not set)" "(not set)" "(not set)" ...
$ sessions     : num  97 1 2 1 5 2 124 1 35 1 ...
$ Campanas1    : Factor w/ 7 levels "Adwords","Campañas",..: 3 5 6 4 5 7 6 7 5 5 ...

голова (Visitas_Por_Fuente)

Источник: локальный фрейм данных [6 x 8]

    date dayOfWeekName    userType                   source   Medium  campaign    sessions    Campanas1
1 2014-09-01        Monday New Visitor             (direct)   (none) (not set)       97      Directo
2 2014-09-01        Monday New Visitor            amazon.es referral (not set)        1  Referencias
3 2014-09-01        Monday New Visitor                 bing  organic (not set)        2          SEO
4 2014-09-01        Monday New Visitor col128.mail.live.com referral (not set)        1        Email
5 2014-09-01        Monday New Visitor         eloi.go.com referral (not set)         5  Referencias
6 2014-09-01        Monday New Visitor         facebook.com referral (not set)        2 Social Media

person Omar Gonzales    schedule 28.12.2014    source источник


Ответы (1)


я думаю, что решение связано с термином: «аккуратные данные».

Шаги:

1.- Упростите свой data.frame с помощью «выбрать» из «Dplyr»:

Visitas_Por_Fuente3 <- select(Visitas_Por_Fuente, Campanas1, sessions)

2.- Растопите его с помощью «melt» из «reshape2»:

Visitas_Por_Fuente6 <- melt(Visitas_Por_Fuente3)

3.- Сделайте график с помощью ggvis:

Visitas_Por_Fuente6 %>% ggvis(~Campanas1, ~value) %>% layer_bars()

ПРИМЕЧАНИЕ:

Если вы просто попытаетесь построить график, не изменяя его форму, это не сработает.

И я не знаю ПОЧЕМУ. На мой взгляд они одинаковые, вот вам головы 2-х data.frames:

A) Visitas_Por_Fuente3 - без изменения формы:

     Campanas1    sessions
1      Directo        97
2  Referencias        1
3          SEO        2
4        Email        1
5  Referencias        5
6 Social Media        2

Б) Visitas_Por_Fuente6 - Изменение формы:

     Campanas1 variable value
1      Directo sessions    97
2  Referencias sessions     1
3          SEO sessions     2
4        Email sessions     1
5  Referencias sessions     5
6 Social Media sessions     2

Почему это? Есть идеи?

Это то, что я хотел, и получил. Однако есть ли способ добавить значения для каждого столбца? Спасибо

введите здесь описание изображения

person Omar Gonzales    schedule 28.12.2014
comment
Та же проблема.. решение работает. Любое понимание того, почему melt необходимо? - person JohnSG; 22.01.2015
comment
@JohnSG У меня не было времени углубляться, но вам следует поискать аккуратные данные, Хэдли Уикхем, чтобы получить больше информации. - person Omar Gonzales; 28.01.2015