簡體   English   中英

sas當地最大時間序列

[英]sas local maximum time series

我有很多台站(idgem)的30年(jahre)降水數據的時間序列。 每年都有一個半月的值,如下所示:

idgem年jan1 jan2 feb1 feb2 ... dec 1 dec 2
1 1960 20 22 25 10 ... 32 30
1 1961 22 25 30 20 ... 30 25

[![示例數據] [1]] [1]

現在,我想以保留值的方式找出局部最大值(如果它們大於上一個和下一個)。 我這樣嘗試過

data test3;
set test2;
 array maxi [24] jan1 jan2 feb1 feb2 mar1 mar2 apr1 apr2 may1 may2 jun1 
                jun2 jul1 jul2 aug1 aug2 sep1 sep2 oct1 oct2 nov1 nov2 dec1 dec2;
 do i=1 to 24;
 if maxi [i-1] < maxi [i]> maxi [i+1] then maxi [i] = maxi [i];
 else maxi [i]=.;
end;
run;

我總是收到錯誤消息“數組下標超出范圍”。

有什么想法可以告訴SAS與上一個值和下一個值進行比較,並在比較值較大時保持比較值嗎? 以及如何比較1961年1月1日和1960年12月2日的值?

[1]: https//i.stack.imgur.com/CId0x.gif
我得到了幫助,現在我有了這個解決方案

data test3;
 set test2;
  array local [24]; 
  do _n_ = 1 to 24;
  local[_n_] = "" ;
 end;
 array maxi [24] jan1 jan2 feb1 feb2 mar1 mar2 apr1 apr2 may1 may2 jun1 
      jun2 jul1 jul2 aug1 aug2 sep1 sep2 oct1 oct2 nov1 nov2 dec1 dec2;
 do _n_ = 2 to 23;
  if (maxi [_n_-1] < maxi [_n_]) and (maxi [_n_]> maxi [_n_+1]) then 
   local [_n_] = maxi [_n_];
  if maxi [_n_] = maxi [_n_-1] then local [_n_] = maxi [_n_];
  if maxi [_n_] = maxi [_n_+1] then local [_n_] = maxi [_n_];
 end;
 do _n_ = 1; 
  if (maxi [_n_] > maxi [_n_+1]) and (maxi [_n_] > lag(dec2)) then local 
    [_n_] = maxi [_n_];
  if (maxi [_n_] = maxi [_n_+1]) and (maxi [_n_] = lag(dec2)) then local 
    [_n_] = maxi [_n_];
 end;
 do _n_ = 24; ???
run;


使用LOG FUNKTION,我可以將jan1與上一個觀察值的dec2進行比較。 但是我如何將dec2與以下觀察結果的jan1比較? 有任何想法嗎?

因此,您可以只使用LAG()函數來找到最后一個元素(DEC2)的先前版本,並使用“領先”技術來獲取第一個元素的下一個版本。 因此,您的MAXI數組現在可以包含26個元素,而新的LOCAL最大數組將包含24個元素。 這樣可以防止索引超出數組范圍。

data test3;
  set test2;
  set test2 (firstobs=2 keep=jan1 rename=(jan1=next)) test2(obs=1 drop=_all_);
  array local [24]; 
  previous = lag(dec2);
  array maxi 
    previous
    jan1 jan2 feb1 feb2 mar1 mar2 apr1 apr2 may1 may2 jun1 jun2 
    jul1 jul2 aug1 aug2 sep1 sep2 oct1 oct2 nov1 nov2 dec1 dec2
    next
  ;
  do i=1 to dim(local);
    local(i)= max(maxi(i),maxi(i+1),maxi(i+2));
  end;
  drop i;
run;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM