Stata: Maksymalna liczba kolejnych wystąpień tej samej wartości w zmiennych
Obserwacje w moim zbiorze danych to odtwarzacze i zmienne binarnetemp1
do góry są równe 1, jeśli gracz wykonał ruch, a równy zeru w przeciwnym razie. Chciałbym obliczyć maksymalną liczbę kolejnych ruchów na gracza.
+------------+------------+-------+-------+-------+-------+-------+-------+ | simulation | playerlist | temp1 | temp2 | temp3 | temp4 | temp5 | temp6 | +------------+------------+-------+-------+-------+-------+-------+-------+ | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | | 1 | 2 | 1 | 0 | 0 | 0 | 1 | 1 | +------------+------------+-------+-------+-------+-------+-------+-------+
Moim pomysłem było wygenerowanie zmiennych pomocniczych w pętli, które zliczałyby kolejne duplikaty, a następnie stosowały egen, rowmax ():
+------------+------------+------+------+------+------+------+------+------+ | simulation | playerlist | aux1 | aux2 | aux3 | aux4 | aux5 | aux6 | _max | +------------+------------+------+------+------+------+------+------+------+ | 1 | 1 | 0 | 1 | 2 | 3 | 0 | 0 | 3 | | 1 | 2 | 1 | 0 | 0 | 0 | 1 | 2 | 2 | +------------+------------+------+------+------+------+------+------+------+
Walczę z wprowadzeniem lokalnej zmiennej licznika, która byłaby przyrostowo zwiększana o 1, jeśli wykonywany byłby kolejny ruch, i byłaby resetowana do zera w przeciwnym razie (poniższy kod zachowuje zmienne pomocnicze ustalone ..):
quietly forval i = 1/42 { /*42 is max number of variables temp*/
local j = 1
gen aux`i'=.
local j = `j'+1
replace aux`i'= `j' if temp`i'!=0
}