全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1950 5
2019-11-10
悬赏 30 个论坛币 已解决
如图:只要这个name(第1列)下的任意一个try(第2列)为“1”,则这个name下的所有treat(第3列)为“1”
该如何写stata代码呢?


复制代码



treat.png

原图尺寸 9.21 KB

treat.png

最佳答案

317792209 查看完整内容

代码很简单,如下:
二维码

扫码加我 拉你入群

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

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

全部回复
2019-11-10 22:34:28
代码很简单,如下:
复制代码
二维码

扫码加我 拉你入群

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

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

2019-11-11 10:04:16
也可试试
复制代码
二维码

扫码加我 拉你入群

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

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

2019-11-11 10:22:34
黃河泉 发表于 2019-11-11 10:04
也可试试
谢谢您,可惜最佳答案只有一个,317792209 时间略早,非常感谢您~
二维码

扫码加我 拉你入群

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

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

2019-11-11 10:57:25
diannaoasd 发表于 2019-11-11 10:22
谢谢您,可惜最佳答案只有一个,317792209 时间略早,非常感谢您~
It's OK!
二维码

扫码加我 拉你入群

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

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

2024-10-30 19:26:11
在Stata中,你可以使用`egen`命令的`max()`函数来实现这一需求。首先确保你的数据按照`name`进行排序,然后利用`egen`找出每个`name`下的最大`try`值,并基于这个结果更新`treat`变量。

以下是具体的Stata代码示例:

```stata
* Example generated by -dataex-. To install: ssc install dataex
clear
input str1 name int(try treat)
"A" 0 1
"A" 0 1
"A" 1 1
"A" 1 1
"B" 0 1
"B" 0 1
"B" 0 1
"B" 1 1
"C" 0 0
"C" 0 0
"C" 0 0
"C" 0 0
end

* 首先按照name排序数据
sort name

* 使用egen命令生成每个name下的try的最大值,保存为变量max_try
by name: egen max_try = max(try)

* 判断max_try是否为1,如果是,则将treat更新为1;否则保持原样(或者也可以设置为0)
replace treat = (max_try == 1)

* 清理不再需要的中间变量max_try
drop max_try

* 查看结果
list, sepby(name)
```

这段代码的关键在于使用了`egen`命令来计算每个`name`下`try`的最大值,然后根据这个最大值是否为1来更新`treat`。最后,我们删除了`max_try`变量以保持数据集的整洁。

请注意,如果初始数据中的`treat`列有其他含义需要保留,那么在执行这段代码之前应该先保存`treat`的原始信息或者创建一个备份变量。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

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

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

栏目导航
热门文章
推荐文章

说点什么

分享

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