更新:
我解决了问题的第一部分。我为每个观察创建了独特的ID:
gen id = _n
然后,我用了
fillin id categ
基本上创造了我想要的东西。
但是,对于其余变量(除了id和categ),几乎所有观察都缺失了。现在,我需要你的帮助来复制其余的变量,而不是让它们丢失。 仅作为示例,每个观察与特定周相关联。我失去了大部分。或者另一个虚拟变量表示是否在药店或杂货店进行购买。他们中的大多数都不见了。
谢谢!
原始信息:
在Stata需要你的帮助!
我的数据库中的每次观察都是一个单位购买由客户制作的啤酒产品。这些产品购买被分类为8个一般类别,使得变量“categ”具有从1到8的值(1 =导入,2 =工艺,3 =溢价,4 =光等)。 对于我的多项logit模型,我需要观察每个观察中客户购买或未购买的所有类别。
假设这是我的初始数据集:
客户ID -------啤酒类-----购买单位
---------- 1 ------------------ 1 ----------------- ---- 1
---------- 2 ----------------- 3 ------------------ --- 1
---------- 3 ----------------- 2 ------------------ --- 1
这就是我要找的:
客户ID -------啤酒类-----购买单位
---------- 1 ------------------ 1 ----------------- ---- 1
---------- 1 ----------------- 2 ------------------ --- 0
---------- 1 ----------------- 3 ------------------ --- 0
---------- 2 ----------------- 1 ------------------ --- 0
---------- 2 ----------------- 3 ------------------ --- 1
---------- 2 ----------------- 3 ------------------ --- 0
---------- 3 ----------------- 1 ------------------ --- 0
---------- 3 ----------------- 2 ------------------ --- 0
---------- 3 ----------------- 2 ------------------ --- 1
目前,我的数据集是600,000 obs。在这个程序之后,我应该有600,000 * 8 = 4,800,000 obs。
构建此代码时,必须根据相关的啤酒类别复制数据集中的所有其他变量。
我认为“填充”并且不太可能“扩展”可能有效。
你的帮助会有很大的帮助。 谢谢!
答案 0 :(得分:1)
这是一个老问题,但如果其他人遇到此问题,我会发布可能的答案。 在这种情况下,您可以为"选择变量"的每个选项生成变量,然后应用reshape long命令:
tab beercategory,gen(b)
reshape long b,i(customerid)j(newvarname)
问候