2009-12-07 4 views
0

내가 쓴 함수는 XML 문서에서 타임 스탬프를 추출합니다. 시간 소인은 일련 요소의 반복 요소 인 이벤트에 연결됩니다.다른 길이의 시퀀스로 작업하기

시리즈 요소는 다양한 양의 이벤트를 가지므로 내 함수는 data.frame (계열의 길이가 동일한 경우)을 반환합니다. 일반적으로 더 일반적인 목록을 반환하고 나는 그것도 매트릭스와 함께 작동 싶어요. 필자는 'list'가 제네릭 형식이라는 점을 지적했지만 (감사합니다. Eduardo) 제네릭 형식에서는 작동하지만 data.frame이나 matrix와 같은 특정 형식에는 문제가 없습니다.

내가 지금해야 할 일은 타임 스탬프 간의 가장 일반적인 거리가 무엇인지 확인하는 것입니다. (시간의 50 % 이상을 자주 보일 것으로 기대합니다.) 필자는 쓰고 다시 썼습니다. 이 작업을 수행하는 기능 :

R> mostCommonStep(list(a=cumsum(c(1,3,3,2,3,3,4,3,2,3,3)), b=cumsum(c(2,3,2,3)))) 
[1] 3 
R> mostCommonStep(data.frame(a=c(2,4,6,8,12,14,18), b=c(12,14,16,18,22,24,28))) 
[1] 2 
R> mostCommonStep(matrix(c(2,4,6,8,12,14,18, 12,14,16,18,22,24,28), 7, 2)) 
[1] 2 

하지만 난 더 "R"

답변

0

나는이 하나 (가장 일반적인 단계는 정말 사례의 50 %보다 더 자주 발생하면 작동)에 정착 할 생각합니다.

mostCommonStep <- function(L) { 
    ## returns the value of the most common difference between 
    ## subsequent elements. 

    ## takes into account only forward steps, all negative steps are 
    ## discarded. works with list, data.frame, matrix. 
    L <- diff(unlist(sapply(as.list(L), as.numeric))) 
    as.numeric(quantile(L[L>0], 0.5)) 
} 
2

데이터 프레임 목록입니다 준수 버전을보고 싶다. 타임 스탬프 사이의 거리가 list/data.frame y의 벡터 "x"에 있다고 가정합니다. 모드를 얻으려면 sort(-table(y[["x"]]))[1]을 할 수 있습니다.

+0

내 데이터에는 타임 스탬프 만 있습니다. 모든 열에 타임 스탬프가 포함되어 있으며 모든 열을 검사하려고합니다. – mariotomo

2

이 방법을 사용하는 가장 좋은 방법은 불규칙한 시계열 개체를 사용하는 것입니다 (the time series view on CRAN 참조). 몇 가지 좋은 옵션 (예 : timeSeries, itsts, fts, xts)이 있지만 가장 인기있는 것은 the zoo package입니다. 당신은 너무 같은 시계열을 만들 수 있습니다

> diff(index(x)) 
Time differences in days 
[1] 2 4 2 5 

당신은 할 수 있습니다

library(zoo) 
x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 9, 14) - 1 
x <- zoo(rnorm(5), x.Date) 

을 그리고, 각 이벤트 사이의 시간 차이를 볼 수, 당신은 단지 difftime 객체를 생성은 diff 기능을 사용할 수 있습니다

> summary(diff(index(x))) 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
    2.00 2.00 3.00 3.25 4.25 5.00 

이 유사하게, 가장 일반적인 시간의 차이를 찾으려면 다른 역을 사용할 수 있습니다 : 당신이 예를 들어 다른 변수는 것 같은이 시간 차이를 분석 ndard 방법 등 table() 같이

> table(diff(index(x))) 
2 4 5 
2 1 1 
+0

"다른 모든 경우"와 "다른 표준 접근법"으로 (아직) 확신이 없다는 것이 내 문제입니다. – mariotomo