数据中有两个变量,gr , ind, n_igr 是类别变量,共有3个取值:1,2,3
ind 是连续变量
n_i 是在gr的每个组里面,ind 的序号
我要生成两个新的变量:x 和 y
其中,x是每个gr 的第一个个案,这样,x就有3个取值(gr有3个取值,即3组,每组一个)
y 则是x的三个取值的和。
我的第一种方法是 删除每组中 n_i 不等于1 的个案,然后把剩下的3个值相加,得到y
第二种方法是用的local 。
问题来了,当我用local 时,发现和第一种方法挑出的三个值不一样。
百思不得其解啊~ 求大神解惑。
代码如下,各位可以跑下看看。
clear
set obs 100
gen gr=runiform()*10
recode gr (0/3.5=1) (3.50001/7=2) (7.00001/10=3)
gen ind=int(runiform()*30+1)
* 以上为生成数据
bysort gr: gen n_i=_n
* 下面是第一种方法
preserve
gen x=gr*ind
keep if n_i==1
gen y=sum(x)
list gr ind x y
sum y
restore
* 下面是第二种方法
preserve
local x= gr* ind
gen y=sum(`x') if n_i==1
sum y
tab y
restore


雷达卡






京公网安备 11010802022788号







