use*_*692 0 loops vector stata
如何编辑变量的每个第二个值?
我的代码是:
set obs 100
gen u = invnorm(uniform())
forvalues d = 1/50 {
gen u[2*d] = u[2*d] + 1
}
Run Code Online (Sandbox Code Playgroud)
我的代码出了什么问题?
对于语法generate不允许之后,除了存储类型和变量名(和标签名称,这里无关紧要)任何东西generate之前=.帮助文件清楚地表明了这一点.
你这里不需要循环.如果你想研究观察2,4,那么
gen new_u = u + 1 if mod(_n, 2) == 0
Run Code Online (Sandbox Code Playgroud)
选择偶数观察数字.更改现有变量generate是非法的,但你可以去
replace u = u + 1 if mod(_n, 2) == 0
Run Code Online (Sandbox Code Playgroud)
缩写
mod(_n, 2) == 0
Run Code Online (Sandbox Code Playgroud)
是
!mod(_n, 2)
Run Code Online (Sandbox Code Playgroud)
鉴于除以2的整数上的模数(严格地说,余数)只能是1或0,所以否定零(逻辑假)给出1(逻辑真).
PS
invnorm(uniform())
Run Code Online (Sandbox Code Playgroud)
在现代的Statas中,用一种古老的方式称为随机正态偏差,均值为0,方差为1
rnormal()
Run Code Online (Sandbox Code Playgroud)
会做的.