2016-06-24 3 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 

데이터는 (9 월까지 월) 8개월 측정됩니다. 와, Y- 축 = 측정 값 X- 축 = 개월 플롯 = 모든 장치

내가 시도 : 나는 함께, 플롯을 만들고 싶어

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 하지만 잘못된 것입니다. 기기에 측정 빈도가 포함되어 있기 때문입니다. 각 애플리케이션 (합계)에 대해 월별 총 가치를 어떻게 추가 할 수 있는지 알 수 없습니다.

내가 시도 :

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

: - 측정 값 (Y) 와 - - 총 가치 (바에서) 그리고 나는 (내 테이블에) 추가 할 수있는 방법을 이해하지 않습니다와 추가 변수 개월 nummers (x)를 와 기기 당 측정 값) –

답변

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)) 

결과를 사용할 수있는 것은으로 요약 한 것입니다 월

0123을 기반으로 그룹 테이블을 - 당신은 당신의 코멘트에 언급 한 바와 같이 매일 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

정말로 감사합니다! 하지만 메신저에서 두 번째 코드를 실행하면 df <- group_by (df, m =.요약 (s) = sum (값) ggplot (df, aes (x = m, y = s, 채우기 = 장치)) + geom_bar (stat = "identity "-> –

+0

클래스 (안양 $ 날짜)"날짜 " –