楼主: 周正
10945 18

[数据管理求助] stata如何剔除某一变量中的括号及括号里的内容 [推广有奖]

  • 0关注
  • 0粉丝

大专生

81%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
212 点
帖子
11
精华
0
在线时间
102 小时
注册时间
2010-2-8
最后登录
2023-10-22

楼主
周正 学生认证  发表于 2020-10-24 14:24:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据如下,我想将name1中所有的括号以及括号里的内容全部剔除,处理后的数据要变成name2的样子,请问有什么命令可以实现?
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str55 name1 str36 name2
  4. "泰丰(江西)制药有限公司" "泰丰制药有限公司"
  5. "福建省龙岩市红坊水泥厂(紫金(水泥)集团)" "福建省龙岩市红坊水泥厂"
  6. "贵州方鸿包装有限责任公司(二戈)(98)" "贵州方鸿包装有限责任公司"
  7. "乌鲁木齐市钙素材料总厂(白杨沟分厂)" "乌鲁木齐市钙素材料总厂"
  8. "(美联)南宁添加剂有限公司" "南宁添加剂有限公司"
  9. "上海化学纤维(集团)有限公司(母体)" "上海化学纤维有限公司"
  10. "格力电器(上海)(集团)有限公司" "格力电器有限公司"
  11. "海尔(集团)空调(杭州)股份有限公司" "海尔空调股份有限公司"
  12. end
复制代码




二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 有限责任公司 股份有限公司 乌鲁木齐市 stata 剔除括号

沙发
DΘstinyじò 发表于 2020-10-24 20:58:52
  1. gen wanted=name1
  2. replace wanted=subinstr(wanted,ustrregexs(2),"",.)  if ustrregexm(wanted,"(.*)(\(\w+\))(.*)") & strpos(wanted , "(")!=0
复制代码
运行第2行代码之后,若发现还有带括号的字符,重复第2行代码,直至全删除。
ustrregexm那里涉及到正则表达式,显示的和我编辑的不一样(点进去修改是正确的,保存出来显示又不一样),还不知道怎么弄,另附了图片,核对修改这一部分。

1.png (3.68 KB)

1.png

藤椅
黃河泉 在职认证  发表于 2020-10-25 09:10:59
我帮你问了,Andrew Musau 回答:
  1. gen wanted = ustrregexra(name1, "([\w\d]+\)", "", .)
  2. replace wanted = ustrregexra(wanted, "\([\w\d]+\)", "", .)
复制代码

板凳
DΘstinyじò 发表于 2020-10-26 11:54:14
DΘstinyじò 发表于 2020-10-24 20:58
运行第2行代码之后,若发现还有带括号的字符,重复第2行代码,直至全删除。
ustrregexm那里涉及到正则表达 ...
新的代码,直接运行达到最后效果:
核对修改同样的地方(ustrregexm代码参数显示问题)
  1. gen wanted=name1
  2. gen temp=sum(strpos(wanted,"("))
  3. while temp[_N]>0 {
  4.         replace wanted=subinstr(wanted,ustrregexs(2),"",.)  if ustrregexm(wanted,"(.*)(\(\w+\))(.*)") & strpos(wanted,"(")!=0
  5.         replace temp=sum(strpos(wanted,"("))
  6. }
复制代码

2.jpg (6.94 KB)

2.jpg

报纸
DΘstinyじò 发表于 2020-10-26 13:24:01
黃河泉 发表于 2020-10-25 09:10
我帮你问了,Andrew Musau 回答:
黄老师,您好。刚刚试了您的代码,可能因为正则表达,转义符之类的,网页显示出来的,和您实际的代码不一样,第二行那里的\w\d显示格式与其他字符不一样(加粗还略带波纹,如图),手动复制和点击复制代码复制出来的代码也不一样。能麻烦您发一个do文档里面的截图吗?

3.jpg (6.93 KB)

3.jpg

地板
周正 学生认证  发表于 2020-10-26 14:16:05
DΘstinyじò 发表于 2020-10-26 11:54
新的代码,直接运行达到最后效果:
核对修改同样的地方(ustrregexm代码参数显示问题)
谢谢大神

7
周正 学生认证  发表于 2020-10-26 14:16:24
黃河泉 发表于 2020-10-25 09:10
我帮你问了,Andrew Musau 回答:
谢谢黄老师

8
黃河泉 在职认证  发表于 2020-10-26 15:52:30
DΘstinyじò 发表于 2020-10-26 13:24
黄老师,您好。刚刚试了您的代码,可能因为正则表达,转义符之类的,网页显示出来的,和您实际的代码不 ...
其对应 do 档在这: drop ().do (1.03 KB)

9
黃河泉 在职认证  发表于 2020-10-26 15:57:48
DΘstinyじò 发表于 2020-10-26 13:24
黄老师,您好。刚刚试了您的代码,可能因为正则表达,转义符之类的,网页显示出来的,和您实际的代码不 ...
我已经上传 (审核中),或你看看这里 (更详尽解释):https://www.statalist.org/forums ... rds-in-for-each-row
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
7945_1573892162 + 3 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 3  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

10
DΘstinyじò 发表于 2020-10-26 17:09:56
黃河泉 发表于 2020-10-26 15:52
其对应 do 档在这:。
好的,我看到了,黄老师,非常感谢~  之前"\("会显示出错(编辑进去是对的,保存出来显示不一样,可能网页进行二次转义)
我也看了您下一条中分享的链接里面的回答,我之前正则表达匹配的想法也是类似的,但繁琐一点。学习到了,谢谢您的回复!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-25 04:15