2013-04-15 3 views
7

내가 누락 된 데이터에 문제가 있습니까,하지만하여 NAS가없는 선형 보간 동물원 데이터 - 그렇지 않으면 쉽게 처리 할 수있을 것입니다 ...추가없는 XTS/R

내 데이터는 다음과 같습니다

time, value 
2012-11-30 10:28:00, 12.9 
2012-11-30 10:29:00, 5.5 
2012-11-30 10:30:00, 5.5 
2012-11-30 10:31:00, 5.5 
2012-11-30 10:32:00, 9 
2012-11-30 10:35:00, 9 
2012-11-30 10:36:00, 14.4 
2012-11-30 10:38:00, 12.6 

알 수 있듯이 - 몇 분 값이 누락되었습니다. xts/zoo이므로 as.POSIXct ...를 사용하여 날짜를 색인으로 설정합니다. 누락 된 타임 스텝을 추가하여 전체 TS를 얻는 방법? 선형 보간으로 누락 된 값을 채우고 싶습니다.

도움 주셔서 감사합니다.

+0

있어 하나의 가능한 답 : http://stackoverflow.com/questions/15114834 당신은 또한 na.approx의 'XOUT'인수를 활용할 경우에도, 당신은 더 이상 합병을 할 필요가 없습니다/interpolate-zoo-object-with-missing-dates? rq = 1 은 동물원에서 작동하지만 이후에는 xts로 돌아갈 수 있습니다. 여전히 "잘못된"값의 문제 - 필터링하고 NA로 설정하는 방법은 무엇입니까? 감사합니다. –

+0

참조 http://stackoverflow.com/questions/11897169/change-nas-to-interpolated-flat-bars –

답변

9

merge 모든 날짜가있는 벡터로 데이터를 입력 할 수 있습니다. 그런 다음 na.approx을 사용하여 공백을 채울 수 있습니다 (이 경우 NA).

data1 <-read.table(text="time, value 
2012-11-30-10:28:00, 12.9 
2012-11-30-10:29:00, 5.5 
2012-11-30-10:30:00, 5.5 
2012-11-30-10:31:00, 5.5 
2012-11-30-10:32:00, 9 
2012-11-30-10:35:00, 9 
2012-11-30-10:36:00, 14.4 
2012-11-30-10:38:00, 12.6", header = TRUE, sep=",", as.is=TRUE) 
times.init <-as.POSIXct(strptime(data1[,1], '%Y-%m-%d-%H:%M:%S')) 
data2 <-zoo(data1[,2],times.init) 
data3 <-merge(data2, zoo(, seq(min(times.init), max(times.init), "min"))) 
data4 <-na.approx(data3) 
4

멋진 대답은 P Lapointe입니다.

data1 <-read.table(text="time, value 
2012-11-30-10:28:00, 12.9 
2012-11-30-10:29:00, 5.5 
        2012-11-30-10:30:00, 5.5 
        2012-11-30-10:31:00, 5.5 
        2012-11-30-10:32:00, 9 
        2012-11-30-10:35:00, 9 
        2012-11-30-10:36:00, 14.4 
        2012-11-30-10:38:00, 12.6", header = TRUE, sep=",", as.is=TRUE) 
times.init <-as.POSIXct(strptime(data1[,1], '%Y-%m-%d-%H:%M:%S')) 
data2 <-zoo(data1[,2],times.init) 
data2 
data4 <- na.approx(object=data2, 
      xout=seq(min(times.init), max(times.init), "min"))