楼主: 晓风残月18
25313 9

[数据管理求助] stata中删除含有特定数字的部分数据 [推广有奖]

  • 2关注
  • 0粉丝

本科生

20%

还不是VIP/贵宾

-

威望
0
论坛币
200 个
通用积分
1.0141
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
900 点
帖子
38
精华
0
在线时间
91 小时
注册时间
2017-10-20
最后登录
2019-9-26

楼主
晓风残月18 发表于 2018-6-7 16:17:13 来自手机 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教前辈,我的id变量数据是2005_10、2005_11、2006_17、2006_12、2007_18、2008_19这样的,想把这里面有2005,2006字眼的数据删除,应该用怎样的命令呢?
二维码

扫码加我 拉你入群

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

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

关键词:数据删除

回帖推荐

fatherberry 发表于4楼  查看完整内容

看起来id是字符型,如果要删除样本id中有2005,2006的数据可以用: drop if strmatch(id, "*2005*") | strmatch(id, "*2006*")

沙发
黃河泉 在职认证  发表于 2018-6-7 18:35:48
你若要问程序,永远附上资料;若要附上资料,永远用 dataex 印出资料;先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。并请参考 http://www.jianshu.com/p/9870080fe769,  https://bbs.pinggu.org/thread-5048204-1-1.html, 与 https://bbs.pinggu.org/thread-5917273-1-1.html

藤椅
大壹子 发表于 2018-6-7 22:50:20
你可以先把2005、2006提取出来,然后再drop掉

板凳
fatherberry 发表于 2018-6-8 12:08:47
看起来id是字符型,如果要删除样本id中有2005,2006的数据可以用:
drop if strmatch(id, "*2005*") | strmatch(id, "*2006*")

报纸
晓风残月18 发表于 2018-6-11 11:17:25
fatherberry 发表于 2018-6-8 12:08
看起来id是字符型,如果要删除样本id中有2005,2006的数据可以用:
drop if strmatch(id, "*2005*") | str ...
谢谢你,这个命令可以解决我的问题

地板
晓风残月18 发表于 2018-6-11 11:17:30
fatherberry 发表于 2018-6-8 12:08
看起来id是字符型,如果要删除样本id中有2005,2006的数据可以用:
drop if strmatch(id, "*2005*") | str ...
谢谢你,这个命令可以解决我的问题

7
数据滚滚来 学生认证  发表于 2020-1-7 22:09:13
fatherberry 发表于 2018-6-8 12:08
看起来id是字符型,如果要删除样本id中有2005,2006的数据可以用:
drop if strmatch(id, "*2005*") | str ...
如果是数字型呢

8
fatherberry 发表于 2020-10-14 18:39:51
数据滚滚来 发表于 2020-1-7 22:09
如果是数字型呢
不好意思,很久不刷论坛了……刚看到

9
13113954007 在职认证  学生认证  发表于 2021-10-18 17:33:22
fatherberry 发表于 2018-6-8 12:08
看起来id是字符型,如果要删除样本id中有2005,2006的数据可以用:
drop if strmatch(id, "*2005*") | str ...
请问如果要删除证券代码Symbol的前三位是300的数据,用哪个命令呢?谢谢

10
赵安豆 发表于 2024-6-16 19:50:48
在Stata中,你可以使用`generate`和`drop if`命令来实现这个目标。首先,你需要将id变量中的"_"符号替换为数值类型,然后通过条件判断是否包含2005或2006,最后删除满足条件的观测值。但是直接用文本方式查找并删除含有特定字眼的数据并不直观,我们需要先转换数据格式。

如果id是字符串类型,可以使用以下步骤:

```stata
* 将ID变量中的下划线替换为数值类型可比较的形式
destring id, replace

* 删除包含2005或2006的观测值
drop if floor(id / 10) == 2005 | floor(id / 10) == 2006
```

但是,如果你的id变量已经是数值类型,并且形式上是200510, 200511等,那么可以直接使用`drop if`命令:

```stata
* 删除包含2005或2006的观测值
drop if floor(id / 10) == 2005 | floor(id / 10) == 2006
```

这里的关键在于使用`floor(id / 10)`将id变量的前四位数字提取出来,然后与2005和2006进行比较。如果前四位为2005或2006,则删除该观测值。

但是根据你给出的数据格式(包含下划线),我们需要先用`destring`命令将字符串形式的id转换成数值类型。这样可以确保我们能够正确地使用数学运算符来进行比较和筛选数据。如果你的数据集中的id变量已经是正确的数值类型,那么就可以直接跳过`destring`这一步骤。

以上步骤应该可以帮助你完成需求,请根据实际数据格式调整命令中对id类型的处理方式。

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



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

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