如何修改以其他变量的最大值为条件的变量
How to modify a variable conditioned on max value of other variable
我有一个长格式数据集:ID、时变变量、时间和结果 (y)。
受试者由于不同的时间和不同的结果值而具有不同的行数,0,1或2。但是我只需要保留与最后一个时间点对应的结果值,并将所有其他结果行替换为0 .
我不知道如何 gen
一个新变量 = outcome only for max(time) by ID
id sbp y time
1 120 1 0
1 126 1 1
1 126 1 2
1 126 1 3
1 126 1 4
1 132 1 5
1 132 1 6
1 132 1 7
1 150 1 8
1 150 1 9
1 150 1 10
1 160 1 11
1 160 1 12
1 160 1 13
1 160 1 14
您似乎在问完全不同的事情:
将每个面板的最后一个之前的结果值替换为 0。
只保留最后一个。
轮到他们了:
bysort id (time) : replace y = 0 if _n < _N
by id: keep if _n == _N
如果您只想要第二个,则需要 bysort id (time)
而不是 by id
。
我有一个长格式数据集:ID、时变变量、时间和结果 (y)。
受试者由于不同的时间和不同的结果值而具有不同的行数,0,1或2。但是我只需要保留与最后一个时间点对应的结果值,并将所有其他结果行替换为0 .
我不知道如何 gen
一个新变量 = outcome only for max(time) by ID
id sbp y time
1 120 1 0
1 126 1 1
1 126 1 2
1 126 1 3
1 126 1 4
1 132 1 5
1 132 1 6
1 132 1 7
1 150 1 8
1 150 1 9
1 150 1 10
1 160 1 11
1 160 1 12
1 160 1 13
1 160 1 14
您似乎在问完全不同的事情:
将每个面板的最后一个之前的结果值替换为 0。
只保留最后一个。
轮到他们了:
bysort id (time) : replace y = 0 if _n < _N
by id: keep if _n == _N
如果您只想要第二个,则需要 bysort id (time)
而不是 by id
。