Stata:变量元素

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)

我的代码出了什么问题?

Nic*_*Cox 6

对于语法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)

会做的.