全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
17471 9
2010-09-20
我现在有var1(string),想根据它生成var2(float),数值从0开始,每当var1的观察值发生变化时,var2自动加1.
请问怎么做?
谢谢大家啦!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-9-20 07:34:17
首先对var1排序,然后逐个判断前后两个观察值是否一样,不一样则加一。

比如说
sort var1
g var2 = 1

forvalue i = 2(1)_N {
replace var2 = var2[_n-1]       if var1[_n] == var1[_n-1]  in `i'
replace var2 = var2[_n-1]+1   if var1[_n] != var1[_n-1]  in `i'
}
二维码

扫码加我 拉你入群

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

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

2010-9-20 08:32:48
这个看上去好极了。不过运行的时候报
invalid syntax。
这是怎么回事呢?
2# 天仕
二维码

扫码加我 拉你入群

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

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

2010-9-20 09:05:34
yawenliu606 发表于 2010-9-20 08:32
这个看上去好极了。不过运行的时候报
invalid syntax。
这是怎么回事呢?
2# 天仕
g 改成gen 就可以了
二维码

扫码加我 拉你入群

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

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

2010-9-20 09:11:42
gen 我已经改了。这个不是问题的。
:)
还是语法错误,怎么回事?
4# zengyitop
二维码

扫码加我 拉你入群

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

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

2010-9-20 13:07:37
那个_N要改为你的样本个数。
我不知道你的样本个数,顺手写了_N。
我试了一下,下面的程序是可以的。我的样本数为4

sort var1
g var2 = 1

forvalue i = 2(1)4 {
replace var2 = var2[_n-1]        if var1[_n] == var1[_n-1]  in `i'
replace var2 = var2[_n-1]+1    if var1[_n] != var1[_n-1]  in `i'
}
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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