Stata 如果在第n行发生了某些事情,则将ID从第n行更改为最后一行
我的数据有些问题。这项调查是针对住房单位进行的。因此,具有同一个人ID的两行可能实际上并不表示同一个人 我想为不同的人分配不同的ID 假设我有这些数据Stata 如果在第n行发生了某些事情,则将ID从第n行更改为最后一行,stata,Stata,我的数据有些问题。这项调查是针对住房单位进行的。因此,具有同一个人ID的两行可能实际上并不表示同一个人 我想为不同的人分配不同的ID 假设我有这些数据 id yearmonth age 1 200001 12 1 200002 12 1 200003 14 1 200004 14 1 200005 14 第三排绝对是不同的人。它的年龄增加了2岁 所以我想换个身份证 id yearmonth age 1 200
id yearmonth age
1 200001 12
1 200002 12
1 200003 14
1 200004 14
1 200005 14
第三排绝对是不同的人。它的年龄增加了2岁
所以我想换个身份证
id yearmonth age
1 200001 12
1 200002 12
10 200003 14
10 200004 14
10 200005 14
我该怎么做?我想我可以通过书写更改第三排的ID
bysort id (yearmonth): replace id=id*10 if age[_n-1]>age+1 | age[_n-1]+1<age
(where I multiply by 10 because all IDs have the same number of numbers, so that multiplying by 10 won't give any duplicate)
但是我如何才能更改所有后续行呢?基于您所拥有的,类似这样的操作可能会满足您的需要
bysort id (yearmonth): generate idchange = age[_n-1]>age+1 | age[_n-1]+1<age
bysort id (yearmonth): generate numchange = sum(idchange)
replace id = 10*id + (idchange-1) if idchange>0
非常感谢。但numchange是创建的,然后根本没有使用。也许第三行中出现的两个idchange应该替换为numchange?
id yearmonth age
2 200001 12
2 200002 14
2 200003 15
2 200004 18
2 200005 18