2017-07-17 49 views
0

給定數據集:根據當前行以及前一行的列值創建新變量?

Year var1 
0  .56 
1  .39 
2  .28 
3  .15 
4  .09 

你會如何創建新列,VAR2 =(VAR1 ñ)/(VAR1 N-1),並有VAR2 等於VAR1 ?所需的輸出應該是這樣的:

Year var1 var2 
0  .56 .56 
1  .39 .70 
2  .28 .72 
3  .15 .54 
4  .09 .60 

我知道如何使用RETAIN語句創建一個累積的變量,但我不知道如何使用它爲這個特殊的任務。任何你可能有的洞察力都非常感謝。

回答

1

,這很容易與LAG()函數來完成。只要記住確保始終在每個觀察點上運行LAG()函數。因此,首先計算VAR2,然後如果它是第一個觀察值,則用您所需的初始值覆蓋該值。

data want ; 
    input year var1 ; 
    var2 = divide(var1,lag(var1)); 
    if _n_=1 then var2=var1; 
cards; 
0  .56 
1  .39 
2  .28 
3  .15 
4  .09 
; 
+0

很漂亮,謝謝! – heyydrien