2016-06-24 7 views
0

Я хочу создать участок (EDA) о данных, которые собираются из домов (устройства в домах). Но я застрял ..r суммарная бара общая стоимость

Данные выглядит так:

df$device df$date  df$time df$value 
boiler  2015-01-13 12:15  0.0009 
boiler  2015-01-13 12:30  0.0007 
boiler  2015-01-13 12:45  0.0005 
boiler  2015-01-13 13:00  0.0010 
TV   2015-01-13 12:15  0.0009 
TV   2015-01-13 12:30  0.0007 
TV   2015-01-13 12:45  0.0005 
TV   2015-01-13 13:00  0.0010 
boiler  2015-01-14 12:15  0.0009 
boiler  2015-01-14 12:30  0.0007 
boiler  2015-01-14 12:45  0.0005 
boiler  2015-01-14 13:00  0.0010 
TV   2015-01-14 12:15  0.0009 
TV   2015-01-14 12:30  0.0007 
TV   2015-01-14 12:45  0.0005 
TV   2015-01-14 13:00  0.0010 

Данные измеряется в течение 8 месяцев (январь по сентябрь). Я хочу, чтобы сделать сюжет, с: Y- ось = измеренное значение Х- ось = месяцев Земельные участки = всех устройств

Я попытался с:

df$monthnumber <- month(df$Date) 
test <- table(df$Device, df$monthnumber) 

barplot(counts1,col=rainbow(7), xlim = c(1,15), 
     legend = c(rownames(counts1)), bty = "L") 

Что приводит к следующему изображению :

Результат: enter image description here Но, это неправильно. Потому что в нем указано, как часто измеряется устройство. Я не знаю, как добавить TOTAL VALUE в месяц для каждого приложения (суммирование).

Я пробовал:

test$value <- aggregate (df$Measurevalue, by = list(genergy$Device), sum) 

Но ошибка была дана:

Error in $<-.data.frame(tmp, "value", value = list(Group.1 = c("Boiler", :
replacement has 7 rows, data has 285896

Как я могу решить эту проблему? - сложенной бар, с общей стоимостью каждого устройства, с (y= energy), (X= months)

+0

Вы пробовали использовать график ggplot? – theArun

+0

Да, но главная проблема заключалась в том, чтобы получить суммирование значения. В моем случае это не сработало, потому что (я думаю), числовые кадры отличаются от lengt. Но я действительно не знаю, как я могу это исправить. –

+0

Итак: - с месяцем nummers (х) - с измеренным значением (у) - с общей стоимостью (в баре) И я не понимаю, как я могу добавить (к моему столу) дополнительным переменный с измеренное значение на устройство) –

ответ

0

Таким образом, можно использовать комбинацию dplyr и ggplot

library("dplyr") 
library("ggplot2") 

df <- data.frame(device = c("boiler","boiler","boiler","boiler","TV","TV","TV","TV","boiler","boiler","boiler","boiler","TV","TV","TV","TV"), 
        date = c("2015-01-13","2015-01-13","2015-01-13","2015-01-13","2015-01-13","2015-01-13","2015-01-13","2015-01-13","2015-01-14","2015-01-14","2015-01-14","2015-01-14","2015-01-14","2015-01-14","2015-01-14","2015-01-14"), 
        time = c("12:15","12:30","12:45","13:00","12:15","12:30","12:45","13:00","12:15","12:30","12:45","13:00","12:15","12:30","12:45","13:00"), 
        value = c(0.009,0.007,0.005,0.001,0.009,0.007,0.005,0.001,0.009,0.007,0.005,0.001,0.009,0.007,0.005,0.001) 
        ) 
    df <- mutate(df,device = as.factor(device), 
       date = as.Date.character(date,format = "%Y-%m-%d")) %>% 
     group_by(device) %>% 
     mutate(sum(value)) 

В результате резюме по устройство на ежедневной основе enter image description here

, как вы упомянули в своем комментарии, вы хотите сделать это для ежемесячно - групп таблицы на основе месяца

df<- group_by(df,m=as.factor(month(date)),device) %>% 
summarise(s = sum(value)) 
ggplot(df,aes(x=m,y=s,fill=device)) + geom_bar(stat="identity") 

Как, у меня нет достаточного количества ежемесячных данных, график выглядит следующим образом .. enter image description here

обновление: 27/06/2016 после ввода данных, запустите следующую команда. А затем попробуйте суммировать данные в зависимости от месяца.

df <- mutate(df,device = as.factor(device), 
        date = as.POSIXct((strftime(date,format = "%Y-%m-%d")))) %>% 
     group_by(device) 
+0

Спасибо, но мои данные содержат почти 800 000 строк. Так, например, после, например, device = c («котел» ....) можно ли это сделать автоматически? –

+0

Действительно спасибо! Но когда im запускает ваш второй код: df <- group_by (df, m = as.фактор (месяц (дата)), устройство)%>% summary (s = сумма (значение)) ggplot (df, aes (x = m, y = s, fill = device)) + geom_bar (stat = "identity «) Я получил эту ошибку: ошибки в Eval (выражение, Envir, Enclos): не знает, как преобразовать 'х' в класс„POSIXlt“ –

+0

класса (DF $ Date) -> "Дата" –

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

  • Нет связанных вопросов^_^