2017-03-26 4 views
0

기상 관측소의 과거 풍속을 분석 중입니다 (경향이 증가하거나 감소하는 경우 등). 이제 매일 매일 하나의 가치가 있습니다. 서로 관련있는 요일을 계산하고 싶습니다 (예 : 1958-03-18, 19, 20 ...). 매년 나는 3 일 이상 연속으로 몇 번이나 폭풍이 몰아 치는지를 알고 싶어합니다.R 연구에서 XTS (또는 data.frame) 객체의 관련 날짜를 카운트

예 : 2004 년 3 월 1982 년 2 회에서

1982-01-30 41.04 
1982-02-02 45.72 
1982-02-03 46.8 
1982-02-04 41.04 
1982-02-12 39.24 
1982-02-17 53.28 
1982-02-18 49.68 
1982-02-19 40.32 
1982-03-01 46.08 

상황 (2,3,4)과 (17,18,19)입니다.

아무도 이것을 계산하고 추가 분석/플로팅을 위해 새 테이블에 넣는 방법을 알고 있습니까?

1982 23 
1983 7 
1984 11 
. 
. 
. 

적어도 일년 내내 모든 일을 계산하면 도움이 될 것입니다.

친절 감사 샤샤는

+0

하루를 폭풍우의 날로 사용하기 위해 사용한 기준점은 무엇입니까? –

+0

인접한 날짜를 그룹화하기 위해 1,1,1,2,2,2,3,3,3 ..과 같은 데이터가있는 열을 추가한다고 가정합니다. 그런 다음 테이블을 녹여 각 그룹의 최소값에서 행을 축소하고 마지막으로이 최소값이 임계 값을 초과하는 녹은 테이블의 행을 계산하십시오. 1,1,2,2,2,3,3,3,4,4 .. 및 1,2,2,2,3,3,3,4,4로 열을 사용하여이 단계를 반복해야합니다. 4 .. –

+0

우리의 데이타베이스는 1 개의 시간당 금액입니다. 하루 24 개 값의 최대 값이 사용됩니다. 그 후에 우리는이 값이 39km/h보다 큰 모든 날을 선택합니다. – Sascha

답변

1

다음은 간단한 폭풍 일을 식별하는 방법 (바람> 39 의견에 따라)와 세 개의 연속 폭풍 일에 날짜입니다.

#create example data 
fakedates <- as.Date("1982-01-01")+(1:730) 
fakewind <- sample(1:80, length(fakedates), replace = TRUE) 
dateyear <- format(fakedates, "%Y") 

df <- data.frame("dates"=fakedates, "maxwind"=fakewind, "year"=dateyear) 

#identify 'storm' days where max wind is >39 
df$storm <- df$maxwind > 39 #identify storm days 

# ensure original data is in chronological order, otherwise you would need to sort first 
# e.g. if(is.unsorted(original$dates), sort(original$dates, .... etc) 

#identify 3-day storms - undetermined for last two days in the record 
df$storm3 <- 
    c(df$storm[1:(length(df$storm) - 2)] & 
     df$storm[2:(length(df$storm) - 1)] & 
     df$storm[3:(length(df$storm))], "unknown", "unknown") 

#select all storm day records 
dfs <- df[df$storm == TRUE, c(1:3)] 

#select only dates of 3-day storms 
dfs3 <- df[df$storm3== TRUE,(1:3)] 

같은 것을 볼 것입니다 귀하의 출력 :

> head(dfs3) 
     dates maxwind year 
12 1982-01-13  57 1982 
13 1982-01-14  47 1982 
33 1982-02-03  65 1982 
49 1982-02-19  79 1982 
61 1982-03-03  49 1982 
68 1982-03-10  55 1982 

당신이 중 하나를 모든 폭풍 일 (DFS)로 또는 3 일 폭풍 일에, 올해 요약하고 필요한 분석 다른 무엇이든 할 수 전용 (dfs3).

R에 대해 더 잘 알지 못하면 다른 여러 가지 방법으로 작업에 착수 할 수 있습니다. 패키지 dplyr로

+0

안녕 Jules, 나는 R에 익숙하지 않지만 당신의 제안을 사용하려고 노력합니다. 대단히 고마워, 그게 내가 사용할 수있는 것 같습니다 :) dplyr와 나는 일들이 모든 방송국에서 발생하는 예를 확인하고 싶다. – Sascha