全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
3457 8
2014-10-06
数据中有两个变量,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



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-10-6 22:45:44
raymond87 发表于 2014-10-6 21:16
数据中有两个变量,gr , ind, n_igr 是类别变量,共有3个取值:1,2,3
ind 是连续变量
n_i 是在gr的每个组 ...
艾玛…这是数学问题?经济问题?还是编程问题,…
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-10-6 22:57:34
421073390 发表于 2014-10-6 22:45
艾玛…这是数学问题?经济问题?还是编程问题,…
stata 命令问题
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-10-7 08:31:42
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-10-7 14:02:51
ywh19860616 发表于 2014-10-7 08:31
你好,dis `d2'  只会显示第一个结果,即1*2=2  
而没有12 和 30
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-10-7 15:12:32
raymond87 发表于 2014-10-7 14:02
你好,dis `d2'  只会显示第一个结果,即1*2=2  
而没有12 和 30
这个就是区别
local不是生成变量,而只是一个值,是暂元。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群