2013-03-05 1 views
-1

я следующая таблицаR - 3 способа таблицы

Date Visits User 
Feb1 10  1 
Feb1 20  1 
Feb1 100 2 
Feb2 10  2 
Feb3 34  6 

Я пытаюсь создать многослойную гистограмму, где ось й Дата и у-ось Визиты, колонка сложена по количеству визитов пользователя в этот день. То есть для 1 февраля он должен показать столбец высоты = 130, где он состоит из двух частей, 100, пользователем 2 и 30 с помощью пользователя 1.

Я понимаю, что я должен создать таблицу этой формы:

  1 2 6 
Feb 1 30 100 
Feb 2  10 
Feb 3   34 

, а затем использовать функцию barplot. Предоставляет ли R любые простые функции для преобразования первой таблицы во второй формат таблицы? Любая помощь была бы принята с благодарностью

ответ

1

Одним из решений было бы использовать пакет ggplot2 для выполнения этой задачи.

library(ggplot2) 
#assuming that data frame is named df 
ggplot(df,aes(Date,Visits,fill=factor(User)))+geom_bar(stat="identity") 

enter image description here

0

Чтобы получить данные в форме, что вы ожидали, вы можете использовать xtabs:

> (temp <- xtabs(Visits ~ Date + User, SODF)) 
     User 
Date  1 2 6 
    Feb1 30 100 0 
    Feb2 0 10 0 
    Feb3 0 0 34 

Вы должны транспонировать эти данные, прежде чем вы можете использовать его с barplot :

barplot(t(temp), legend = TRUE, 
     col = c("skyblue", "grey", "palegreen"), 
     xlab = "Date", ylab = "Visits") 

enter image description here

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