楼主: sysi11
2167 4

[编程问题求助] 如何分组生成一个新变量,只要有一个观察值的event取值1,wot则为1,否则为0?? [推广有奖]

  • 0关注
  • 0粉丝

已卖:2份资源

博士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
23 个
通用积分
21.9153
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
344 点
帖子
69
精华
0
在线时间
358 小时
注册时间
2008-9-2
最后登录
2025-9-18

楼主
sysi11 发表于 2020-11-8 10:37:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问,我想生成一个新变量wot,只要有一个观察值的event取值1,wot则为1,否则为0。弄了很久还是错的。数据如下。
id               enddate             event        year
002012        2004-12-31                2004
002012        2005-12-31                2005
002012        2006-12-31                2006
002012        2007-12-31        1        2007
002012        2008-12-31        1        2008
002012        2009-12-31                2009
002012        2010-12-31                2010
002013        2004-12-31        1        2004
002013        2005-12-31        1        2005
002013        2006-12-31                2006
002013        2007-12-31        1        2007
002013        2008-12-31        1        2008
002013        2009-12-31        1        2009
002013        2010-12-31                2010
002014        2004-12-31                2004
002014        2005-12-31                2005
002014        2006-12-31                2006
002014        2007-12-31                2007
002014        2008-12-31                2008
002014        2009-12-31                2009
002014        2010-12-31                2010
谢谢!

二维码

扫码加我 拉你入群

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

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

关键词:Event vent Even EVE 新变量

回帖推荐

DΘstinyじò 发表于4楼  查看完整内容

建议用dataex命令(ssc install dataex)贴出示例数据。 数据结构尽可能描述清楚,问题解释清晰,这样有助于高效解决您的问题。 尝试以下代码: ——如果event的值只有1和空值——如果event的值为1,只是举例,还有别的不确定的值

沙发
Alice_1i 发表于 2020-11-8 11:55:23
bysort id enddate year : gen event=_N
replace event=0 if event!=1

bysort 后面是你确定观察值是否重复的范围,变量越多,定义越精准,你试试看是不是你想要的

藤椅
sysi11 发表于 2020-11-8 14:47:31
Alice_1i 发表于 2020-11-8 11:55
bysort id enddate year : gen event=_N
replace event=0 if event!=1
谢谢。我好像没讲清楚。我想给每个id生成一个新变量wot,每个id的event有2004-2010年取值,只要这7年中有一个event取值不为空,wot就取1。想要的结果如下
id               enddate       event      year      wot
002012        2004-12-31                2004    1
002012        2005-12-31                2005     1
002012        2006-12-31                2006     1
002012        2007-12-31        1        2007    1
002012        2008-12-31        1        2008     1
002012        2009-12-31                2009       1
002012        2010-12-31                2010       1
002013        2004-12-31        1        2004      1
002013        2005-12-31        1        2005       1
002013        2006-12-31                2006         1
002013        2007-12-31        1        2007        1
002013        2008-12-31        1        2008        1
002013        2009-12-31        1        2009         1
002013        2010-12-31                2010           1
002014        2004-12-31                2004           0
002014        2005-12-31                2005           0
002014        2006-12-31                2006          0
002014        2007-12-31                2007          0
002014        2008-12-31                2008          0
002014        2009-12-31                2009          0
002014        2010-12-31                2010          0

板凳
DΘstinyじò 发表于 2020-11-8 17:03:03
sysi11 发表于 2020-11-8 14:47
谢谢。我好像没讲清楚。我想给每个id生成一个新变量wot,每个id的event有2004-2010年取值,只要这7年中有 ...
建议用dataex命令(ssc install dataex)贴出示例数据。
数据结构尽可能描述清楚,问题解释清晰,这样有助于高效解决您的问题。
尝试以下代码:
——如果event的值只有1和空值
  1. bys id (event) : gen wot=event[1]==1
复制代码
——如果event的值为1,只是举例,还有别的不确定的值
  1. bys id : gen wot=event==1
  2. bys id (wot): replace wot=wot[_N]
复制代码
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员
ritaing + 20 + 4 + 3 + 3 + 3 精彩帖子

总评分: 经验 + 20  论坛币 + 4  学术水平 + 6  热心指数 + 6  信用等级 + 6   查看全部评分

报纸
sysi11 发表于 2020-11-8 17:19:18
DΘstinyじò 发表于 2020-11-8 17:03
建议用dataex命令(ssc install dataex)贴出示例数据。
数据结构尽可能描述清楚,问题解释清晰,这样有助 ...
我试了一下,正是我想要的结果。太感谢了!

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

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