2017-01-17 2 views
1

나는 시계열로 .csv 파일을 가지고 있습니다. ts()을 사용하고 그것을 플롯하려고합니다! 그러나 내 초기 데이터 세트는 한 번의 작업에 대해 하나의 행입니다. 그래서 주파수를 가지고 테이블을 만들고 싶습니다. 나는 그것을했지만, 데이터가없는 (기존의) 날에는 주파수 값을 0으로 지정하고 싶습니다! 여기 R이있는 빈도 테이블 (원시 시계열에서)

내 데이터의 샘플입니다

> table(ech$Date.Time) # Frequencies of observed dates 

table : frequencies of observed dates

I 생성 된 기존의 모든 날짜, 사용 : 나는 좀하고 싶습니다 결과가 여기

> seq.Date(from = min(ech$Date.Time), to = max(ech$Date.Time), by = 1) 

을 그리고 :

result wanted

몇 가지 시도했지만 시도하고 싶지 않습니다! 다음은 시도한 예제입니다.하지만 아무 것도 인쇄하지 않고 오류 메시지를 이해하지 못합니다.

> plot(ts(data = ech, deltat = table(ech$Date.Time))) 

Error in plot(ts(data = ech, deltat = ech$Date.Time)) : erreur d'évaluation de l'argument 'x' lors de la sélection d'une méthode pour la fonction 'plot' : Error in Ops.Date(1, deltat) :/not defined for "Date" objects

내가 deltat 사용해야

, 또는 frequency, 또는 ts()를 사용하는 다른 이전에 무엇인가?

감사합니다.

답변

1

merge을 사용하여 전체 날짜 순서를 데이터 세트에 결합 할 수 있습니다.

날짜 열이 같은 클래스 (이 경우 날짜)인지 확인해야합니다.

데이터 세트 및 날짜의 순서를 사용 :

#sequence of dates 
dates2 <- data.frame(dates = seq(as.Date('2014-04-05'), as.Date('2014-04-15'), by = 1)) 

#merging the ech to sequence of dates 
newdf <- merge(dates2, ech, all.x = TRUE, by = 'dates') 
#setting NA to zero 
newdf$freq[is.na(newdf$freq)] <- 0 

는 출력 : 내가 ECH으로 이것을 사용 완료를 들어

 dates freq 
1 2014-04-05 1 
2 2014-04-06 1 
3 2014-04-07 2 
4 2014-04-08 0 
5 2014-04-09 0 
6 2014-04-10 2 
7 2014-04-11 0 
8 2014-04-12 1 
9 2014-04-13 0 
10 2014-04-14 2 
11 2014-04-15 1 

는 :

완벽
dates <- as.Date(c("2014-04-05", "2014-04-06", "2014-04-07", 
        "2014-04-10", "2014-04-12", "2014-04-14", "2014-04-15")) 
freq <- c(1, 1, 2, 2, 1, 2, 1) 
ech <- data.frame(dates, freq) 
+1

, 나는 'didn를 이 병합 함수에 대해 알지 못합니다 ... 도움 주셔서 대단히 감사합니다! –

+0

대단히 환영합니다! 도와 줄 수있어서 기뻐 :) – LyzandeR