我一直试图解决这个问题,阅读不同的材料,但我无法弄明白。它非常简单,使用与阵列配合使用的语言大约需要5秒钟,但我无法在Stata中解决这个问题。
请忽略在某些地方替换反引号,我无法让它们正确显示。让我们说我有一个身份证变量,其中包括变量,告诉我一个人是否有公司或是独自一人,以及他是否饮酒。如果有人有公司,我有一个变量显示这些同伴是多少以及他们是谁(通过他们在数据集中的ID)。我试着看看这些同伴是否喝酒并用这些信息做重复的过程。显然在Stata,如果同伴有ID 345我不能使用酒精[345],因为这给了我观察的酒精状态345,而不是ID 345.在Stata有类似的形式吗?如果id == 345,我只能通过列表酒精列出它。我想要做的就是把这些ID传递给一个重复的过程,让我看看所有这些同伴都不喝酒,这个过程的一部分就是有一个变量d,我为每一个都修改了不喝酒的同伴(即当变量酒精不是1时)。我执行以下操作,如果m是伴侣的数量(让这里说两个)和comp' x'`x'是ID为k的人的同伴的ID(让我们在这里说ID 8):
gen d = .
local m = 2
local k = 8
forvalues x= 1/'m' {
replace d = 'x' if alcohol[comp'k'`x'] !=1
}
因此,例如ID为8的人的第一个伴侣将具有ID comp81 = 345,第二个comp82 = 567。但是,由于上述原因,当然这段代码不能满足我的要求。
以下将给出我的同伴ID为comp81和comp82的人的酒精状态,而不是我想要的这些同伴的酒精状态:
. local m=2
. local k = 8
. forvalues x= 1/'m' {
2. list alcohol comp'k'`x'
3. }
以下情况也不起作用:
local m = 2
local k = 8
forvalues x= 1/'m' {
2. list alcohol if id==comp'k'`x'
3. }
我不想仅仅列出同伴的酒精状态,但上面的例子表明我找不到数据的Stata等价物并用它来解决我遇到的问题。 简而言之,我想知道我可以在stata中使用什么来获取同伴的酒精状态,即使用数组的其他编程语言中的酒是什么[comp' k'`x&# 39;]
谢谢大家!