Stata 如何计算家庭数量?

Stata 如何计算家庭数量?,stata,Stata,我有一套家庭数据,记录了4200个家庭的20000多条记录。在我的数据集中,家庭ID没有任何列&所有记录都是每个家庭成员的。有一列是关于个人序列号的,每个序列号都是“1”,家庭应该改变。(即:如果我们开始对家庭进行编号,当第一个人的序列号等于1时,对应的HH_ID应该是“1”。一旦下一个记录中的个人序列号=1,则HH_ID应该是2。)所以我想添加一个名为HH_ID的列,并将其编号为1-4200。如何使用STATA编写程序?您需要的是(假设个人标识符为变量personid) 就这样。解释比代码长。

我有一套家庭数据,记录了4200个家庭的20000多条记录。在我的数据集中,家庭ID没有任何列&所有记录都是每个家庭成员的。有一列是关于个人序列号的,每个序列号都是“1”,家庭应该改变。(即:如果我们开始对家庭进行编号,当第一个人的序列号等于1时,对应的HH_ID应该是“1”。一旦下一个记录中的个人序列号=1,则HH_ID应该是2。)所以我想添加一个名为HH_ID的列,并将其编号为1-4200。如何使用STATA编写程序?

您需要的是(假设个人标识符为变量
personid

就这样。解释比代码长。表达式
personid==1
在true时计算为1,在false时计算为0。对于第一个家庭,第一个人,这将是1,对于同一家庭中的其他人,这将是0。对于第二个家庭,第一个人,这将是1,依此类推。函数
sum()
给出累计或运行的总和,因此您应该以1,1,1,2,2,2,2,3,3,。。。显然,1、2、3等的实际数量将取决于住户人数

论Stata see中的真与假

您想要的是(假设个人标识符有一个变量
personid

就这样。解释比代码长。表达式
personid==1
在true时计算为1,在false时计算为0。对于第一个家庭,第一个人,这将是1,对于同一家庭中的其他人,这将是0。对于第二个家庭,第一个人,这将是1,依此类推。函数
sum()
给出累计或运行的总和,因此您应该以1,1,1,2,2,2,2,3,3,。。。显然,1、2、3等的实际数量将取决于住户人数

论Stata see中的真与假


我会将其指定为
gen long hhid=…
,但这可能是口味的问题。(我不相信Stata对变量类型的默认设置,让我们这样说。)这是对大型数据集的极好建议。一个
float
对于所指出的问题是可以的。我使用了“gen hhid=sum(personid=1)”&它起作用了。希望即使没有长时间或浮动也不会出错。无论如何,我会记住在处理大数据集时使用long。非常感谢您的精彩回复。我会将其指定为
gen long hhid=…
,但这可能是口味的问题。(我不相信Stata对变量类型的默认设置,让我们这样说。)这是对大型数据集的极好建议。一个
float
对于所指出的问题是可以的。我使用了“gen hhid=sum(personid=1)”&它起作用了。希望即使没有长时间或浮动也不会出错。无论如何,我会记住在处理大数据集时使用long。非常感谢你的回复。
 . gen hhid = sum(personid == 1)