나는 한달 동안의 변화를 테스트하는데 사용할 수있는 변수가있는 동물원 객체를 보강하고 싶습니다. 이 작업을 수행하는 더 일반적인 방법이있을 것이라고 확신합니다. 제안은 훌륭하지만,이 간단한 접근이 실패하는 이유를 이해하고 싶습니다. 여기에 실종 된 내용을 이해하면 기분이 나아질 것입니다. ;-)동물원에서 개월 작업하기
동물원 객체 용
library(zoo)
tz <- structure(c(7L, 7L, 1L, 6L, 0L, 9L, 0L, 1L, 6L, 0L, 3L, 3L, 5L,
0L, 8L, 2L, 0L, 3L, 2L, 5L, 2L, 3L, 4L, 7L, 8L, 9L, 0L, 1L, 4L,
5L, 6L, 7L, 8L, 2L, 3L, 4L, 5L, 8L, 9L, 0L), .Dim = c(20L, 2L
), .Dimnames = list(NULL, c("x", "y")), index = structure(c(13880,
13881, 13913, 13916, 13946, 13947, 13948, 13980, 13983, 13984,
13985, 14016, 14048, 14082, 14083, 14115, 14147, 14180, 14212,
14243), class = "Date"), class = "zoo")
as.yearmon()을 사용하여 1 년/월 변수를 추가하는 것이 쉬운 것처럼 보입니다. 나는 데이터 프레임에 있다면 이것은 미세 문자 변수를 얻을 것입니다,하지만 당신은 as.numeric()
이tz$yrmo <- as.numeric(as.yearmon(index(tstz)))
> head(tz)
x y yrmo
2008-01-02 7 2 2008.000
2008-01-03 7 3 2008.000
2008-02-04 1 4 2008.083
2008-02-07 6 7 2008.083
2008-03-08 0 8 2008.167
2008-03-09 9 9 2008.167
이 멋지다 내가 성공적으로
를 데이터 요소를 비교할 수에 포장하는 것을 잊지 경우 동물원에 비극은 계속된다(TZ의 $의 X [6]! = TZ의 $ y를 [6])
2008년 3월 9일
FALSE
하지만이 결과를 얻는 이유는 비교 년/월 변수 르?
> (tz$yrmo[2] != tz$yrmo[1])
Data:
logical(0)
Index:
character(0)
왜 이런 식으로 yearmon 또는 데이터 항목을 테스트하는 것이 실패합니까? (둘 다 맞아야한다)
> identical(tz$yrmo[2] , tz$yrmo[1])
[1] FALSE
> identical(tz$x[2] , tz$x[1])
[1] FALSE
나는 동물원에서 색인 클래스를 생성하는 yearmon()을 사용하여 불을 질렀다. Dirk Eddelbuettel의 '월 단위로 날짜 바꾸기'와 같은 것으로 전환해야합니까? Number of months between two dates
매우 도움이됩니다. 두 가지 질문에 모두 답변하고 문제를 해결하는 방법을 보여줍니다. – BobH
그리고 올바르게 작동하는 것으로 보이는 첫 번째 테스트 (tz $ x [6]! = tz $ y [6])는 임의로 동일한 인덱스가있는 두 값을 비교 한 결과에 따라 달라집니다. 값은 같지만 인덱스가 다른 곳에 시도해 보았을 때 실패했을 것입니다 (tz $ x [2]! = tz $ y [4]). – BobH