월별 값이 포함 된 데이터 집합 R이 있습니다. 그러나 몇 달이 빠져 있습니다. 예를 들어 :시계열에서 월 누락 컴퓨팅
"2001년 9월 1일" "2001년 10월 1일" "2001년 12월 1일"는 "2002년 2월 1일"
년 11 월 2001없는 얀 2002이 없습니다. 해당 월을 시계열에 포함시키고 값을 0으로 추가하려면 어떻게합니까?
감사합니다. 당신이 data.frame
에 데이터가 있다고 가정
월별 값이 포함 된 데이터 집합 R이 있습니다. 그러나 몇 달이 빠져 있습니다. 예를 들어 :시계열에서 월 누락 컴퓨팅
"2001년 9월 1일" "2001년 10월 1일" "2001년 12월 1일"는 "2002년 2월 1일"
년 11 월 2001없는 얀 2002이 없습니다. 해당 월을 시계열에 포함시키고 값을 0으로 추가하려면 어떻게합니까?
감사합니다. 당신이 data.frame
에 데이터가 있다고 가정
는 dat1
전화 :
dat1 <- data.frame(
date = as.Date(c("2001-09-01", "2001-10-01", "2001-12-01", "2002-02-01")),
val = 1:4
)
당신은 당신이 필요로하는 모든 날짜가 하나의 열을 포함하는 두 번째 data.frame
을 만들 수 있습니다. 이 순서를 만들 seq.Date
를 사용
dat2 <- data.frame(
date = seq(as.Date("2001-09-01"), by="1 month", length.out=7)
)
는 그 다음 간단한
merge
작업입니다 :
merge(dat1, dat2, all=TRUE)
date val
1 2001-09-01 1
2 2001-10-01 2
3 2001-11-01 NA
4 2001-12-01 3
5 2002-01-01 NA
6 2002-02-01 4
7 2002-03-01 NA
누락 된 값이 NA
그러나 당신은 당신이 원하는 경우, 0을 설정하는 부분 집합을 사용할 수 있습니다.
월간 시리즈이므로 "yearmon"
클래스 시간으로 시리즈로 표시하는 것이 좋습니다. 처음 몇 줄은 테스트 데이터를 설정하고 마지막 두 줄은 실제 충전 할 :
# set up input data as a zoo series
library(zoo)
d <- c("2001-09-01", "2001-10-01", "2001-12-01", "2002-02-01")
z <- zoo(1:4, as.yearmon(d))
# merge with zero width series
g <- seq(start(z), end(z), 1/12)
zz <- merge(z, zoo(, g), fill = 0)
가 "ts"
시리즈가 필요한 경우 as.ts(zz)
를 사용하거나 "Date"
클래스의 시간이 동물원 시리즈가 원하는 경우 다음 시도를 : time(zz) <- as.Date(time(zz))
. 당신이를 제공하는 경우 당신은 더 유용한 응답을받을 것입니다
http://cran.r-project.org/web/packages/zoo/vignettes/zoo-faq.pdf
: 이것은 또한 R 명령
는vignette("zoo-faq")
를 통해 또는 인터넷에서 사용할 수있는 동물원 자주 묻는 질문의 자주 묻는 질문 (13)에 몇 가지 예제와 함께 설명되어주 구조. 'dput (head (mydata, 10)) '의 출력을 제공하십시오. –