楼主: imaocan
6447 5

Stata如果判断一个变量内部有相同值,谢谢【问题升级】 [推广有奖]

  • 0关注
  • 0粉丝

初中生

23%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
75 点
帖子
9
精华
0
在线时间
8 小时
注册时间
2012-2-7
最后登录
2013-1-20

楼主
imaocan 发表于 2012-4-3 15:35:59 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
原帖请参考 https://bbs.pinggu.org/thread-1368024-1-1.html

现在问题重新表述为下:
A             B                  C
1001       1                  .
1001       2                  .
1001       3                  .


1002       1                  .
1002       1                  1


1003       2                  .
1003       2                  1
1003       1                  .
1003       2                  1
1003       1                  1
1003       2                  1

A, B, C为三个变量,sort by A,对A=1001来说,B中三个对应值不同,则对应C变量三个值都为空值; 对A=1002和1003来说,B中对应的值至少有两个相同(本例中分别为1和2),当这个重复值第一次出现时赋空值,第二次出现赋值为1

现需要实现此功能命令,若一个数据范围内(如A=1001,1002,1003这个范围内),观察的B变量中第一次出现某值,则对应的C中为空值,当第二次或多次重复出现该值,就赋值为1
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata thread pinggu HTTP 升级

沙发
tianye 在职认证  发表于 2012-4-3 22:19:42
我尝试的写了下,不知道对不对,LZ可以尝试下。

gen C=.
bysort A:replace gen C=1 if L.B=B

或者
bysort A:replace gen C=1 if B[_n-1]=B[_n]


藤椅
imaocan 发表于 2012-4-3 23:58:36
我已开始也是这么想的,实际上只能比较相邻两个是否相同,如果不相邻就不好判断了,但这是个方向

板凳
cjhong111 发表于 2012-4-4 01:35:37
是不是这样:
sort  a
replace c=.
by a b,sort: gen n=_n
replace c=1 if n~=1
drop n

报纸
hplcdadong 发表于 2012-4-4 03:44:35
This should work:

sort A B
egen group=group(A B)
duplicates tag group, gen(dup)
bysort group: replace dup=. if _n==1
replace dup=1 if dup>1 & !missing(dup)
list, sepby(A)          //check your data

地板
imaocan 发表于 2012-4-4 13:47:58
楼上二位解答都正确,补充一下,原来B的排列是按时间顺序的,处理后顺序和原来不同了,可增加一个时间变量控制排序

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-19 05:39