Наблюдения в моем наборе данных являются игроками, а двоичные переменные temp1
up равны 1, если игрок совершил движение и равен нулю в противном случае. Я хотел бы рассчитать максимальное количество последовательных ходов на игрока.Stata: Максимальное количество последовательных вхождений одного и того же значения по переменным
+------------+------------+-------+-------+-------+-------+-------+-------+ | simulation | playerlist | temp1 | temp2 | temp3 | temp4 | temp5 | temp6 | +------------+------------+-------+-------+-------+-------+-------+-------+ | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | | 1 | 2 | 1 | 0 | 0 | 0 | 1 | 1 | +------------+------------+-------+-------+-------+-------+-------+-------+
Моя идея состояла в том, чтобы генерировать вспомогательные переменные в цикле, который будет рассчитывать последовательные дубликаты, а затем применить 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 | +------------+------------+------+------+------+------+------+------+------+
Я борется с введением локальной переменной счетчика, который будет быть постепенно увеличена на 1, если последовательное перемещение осуществляется, и будет обнулена в противном случае (код ниже сохраняет вспомогательные переменные фиксированной ..):
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
}