2014-09-27 66 views
2

我有這樣的數據集2個變量:周和brand_chosen,其中品牌選擇是指源自例如其產物一個超級市場被選中,它看起來像這樣。SPSS識別不同滯後值通過循環

Week  brand_chosen 
2   19 
2   15  
2   50 
2   12 
3   19 
3   16 
3   50 
4   77 
4   19 

我所試圖做的是對每一行,注意其中的品牌購買被做了一週,在本週是否被做了同樣的品牌購買之前。如果它沒有,1的可變虛擬將採取的值,否則爲0。
由於本週出現了多次,我不能走只是滯後(本週一),所以我可能需要通過一週變量循環每種情況下,直到它找到第一個不同的值。

這就是我試圖做

loop i=1 to 70. 
    do if (week<>lag(week,i) and brand_chosen=lag(brand_chosen,i)). 
     compute dummy=1. 
    end loop. 
    else. 
     compute dummy=0. 
    end if. 
end loop. 
execute. 

其中70只是一個任意號碼,以便我相信,它會檢查所有前面的情況。 我得到了兩個問題。首先滯後函數需要包含我理解的數字,但「我」在這裏不被視爲數字。
第二個問題是,如果條件滿足,我想關閉循環,並轉到下一個案例,但出現錯誤。

我是新來的SPSS語法,我與一個苦苦掙扎,所以任何幫助是極大的讚賞。

+0

如果您提供相應的輸出爲你的榜樣和/或,你會實現它的循環的僞代碼可能會有所幫助。 – lossleader 2014-09-27 16:14:15

+0

@lossleader我編輯了我的評論提供了一些更多的信息,如果它可以是任何幫助 – 2014-09-27 17:27:27

回答

1

我認爲每星期的組合 - brand_chosen是獨一無二的。在這種情況下,解決方案非常簡單。只需按brand_chosen然後一週對數據集進行重新排序,然後運行簡單的延遲命令即可。

這應該做的伎倆:

SORT CASES BY brand_chosen week. 
COMPUTE dummy=0. 
IF (brand_chosen=LAG(brand_chosen) AND week>LAG(week)) dummy = 1. 
+0

非常感謝您的答案。 對不起,我應該提到周品牌的每種組合都不是唯一的。因此,在連續兩個案例具有同一周和同一品牌的情況下,只有這兩個案例中的第一個將具有dummy = 1。 同樣的事情是,在某些情況下,本週可能從的「50周」去「在53周」,所以周不連續的順序出現。 – 2014-09-28 13:24:55

+0

>「因此,在一個場景,兩個連續的情形具有相同的一週,同一品牌,只有前的這兩種情況都會有虛擬= 1」如果這是你想要達到的outpunt,一切都很好,因爲代碼將做到這一點。 – mirirai 2014-09-28 15:23:11

+0

>「還有一點,在某些情況下,本週可能會從」第50周「到」第56周「,因此這些周不會以連續順序出現。」我改變了if語句中的操作符。希望這會滿足你的需求。 – mirirai 2014-09-28 15:24:22