出于调试目的显示或打印循环变量
Display or print loop variable for debugging purposes
ID A1 A2 A3
1001 ABD AAA ABC
1002 ABE BBB CCC
1003 ABC CCC DDD
我有一个循环如下:
generate trackr = 0
display "generated trackr"
foreach var of varlist a1 a2 a3{
display "`var'" id[_n]
replace trackr = 1 if (`var'=="ABC")
}
在 Stata 中,我想在对 trackr
进行更改时找出并打印出来。 (我想知道 row/column "ABC" 是在哪个地方被发现的。)
我试过上面的方法 id[_n]
但它只部分起作用。
我只想显示 id[_n]
if var=="ABC"
和 trackr
更改为 1(从 0)。我尝试将所有内容都放在 if
块中,但我认为 Stata 中的 if
工作方式不同?
您似乎想要的东西不需要循环。有关在 Stata 问题中提供示例数据的更好方法,请参阅 SSC 的 dataex
。
clear
input ID str3 (A1 A2 A3)
1001 ABD AAA ABC
1002 ABE BBB CCC
1003 ABC CCC DDD
end
gen trackr = inlist("ABC", A1, A2, A3)
list if inlist("ABC", A1, A2, A3)
+---------------------------------+
| ID A1 A2 A3 trackr |
|---------------------------------|
1. | 1001 ABD AAA ABC 1 |
3. | 1003 ABC CCC DDD 1 |
+---------------------------------+
此处 inlist()
如果第二个和后面的参数中的任何一个等于第一个参数,则生成 1,否则生成 0。
在你的循环中,像 display A1[_n]
这样的东西只会在第一次观察中显示值,因为你循环遍历变量,而不是观察。但是不需要循环。
如果您只想查看满足您标准的第一个观察结果,一种方法是
. list if trackr & sum(trackr) == 1
+---------------------------------+
| ID A1 A2 A3 trackr |
|---------------------------------|
1. | 1001 ABD AAA ABC 1 |
+---------------------------------+
因此 list if sum(inlist("ABC", A1, A2, A3)) == 1
也可以找到第一个这样的观察结果。
ID A1 A2 A3
1001 ABD AAA ABC
1002 ABE BBB CCC
1003 ABC CCC DDD
我有一个循环如下:
generate trackr = 0
display "generated trackr"
foreach var of varlist a1 a2 a3{
display "`var'" id[_n]
replace trackr = 1 if (`var'=="ABC")
}
在 Stata 中,我想在对 trackr
进行更改时找出并打印出来。 (我想知道 row/column "ABC" 是在哪个地方被发现的。)
我试过上面的方法 id[_n]
但它只部分起作用。
我只想显示 id[_n]
if var=="ABC"
和 trackr
更改为 1(从 0)。我尝试将所有内容都放在 if
块中,但我认为 Stata 中的 if
工作方式不同?
您似乎想要的东西不需要循环。有关在 Stata 问题中提供示例数据的更好方法,请参阅 SSC 的 dataex
。
clear
input ID str3 (A1 A2 A3)
1001 ABD AAA ABC
1002 ABE BBB CCC
1003 ABC CCC DDD
end
gen trackr = inlist("ABC", A1, A2, A3)
list if inlist("ABC", A1, A2, A3)
+---------------------------------+
| ID A1 A2 A3 trackr |
|---------------------------------|
1. | 1001 ABD AAA ABC 1 |
3. | 1003 ABC CCC DDD 1 |
+---------------------------------+
此处 inlist()
如果第二个和后面的参数中的任何一个等于第一个参数,则生成 1,否则生成 0。
在你的循环中,像 display A1[_n]
这样的东西只会在第一次观察中显示值,因为你循环遍历变量,而不是观察。但是不需要循环。
如果您只想查看满足您标准的第一个观察结果,一种方法是
. list if trackr & sum(trackr) == 1
+---------------------------------+
| ID A1 A2 A3 trackr |
|---------------------------------|
1. | 1001 ABD AAA ABC 1 |
+---------------------------------+
因此 list if sum(inlist("ABC", A1, A2, A3)) == 1
也可以找到第一个这样的观察结果。