楼主: c630667927
2619 7

[编程问题求助] 小白求助!stata foreach循环 想要对两个变量里的数据依次执行如下三个命令 [推广有奖]

  • 0关注
  • 0粉丝

高中生

32%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
59 点
帖子
4
精华
0
在线时间
51 小时
注册时间
2019-4-12
最后登录
2021-5-11

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我的目的是,从杂乱无章的地址中提取出有关地级市的信息,并把地址改为格式统一的地级市名称。
RegisterAddress是杂乱无章的地址,var1是所有地级市的模糊名称,var2是所有地级市的标准名称。
我想的办法是:通过var1用indexnot函数来从RegisterAddress提取有用的信息,最后把地址替换为地级市的标准名称var2。


如题,我想对var1和var2里的每个数据都执行如下三个命令:
gen 判断变量=indexnot("var1",RegisterAddress)//通过var1用indexnot函数来从RegisterAddress提取有用的信息
replace RegisterAddress="var2" if 判断变量==0//将能够提取出有用信息的观测值改为对应的标准地级市名称
drop 判断变量//删除用于判断是否提取出有用信息的变量

我的部分数据如下:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str6 Symbol str4 year str532 RegisterAddress str33(var1 var2)
  4. "000089" "2010" "深圳市"                                                                   "黑河"       "黑河市"         
  5. "000089" "2010" "深圳市"                                                                   "绥化"       "绥化市"         
  6. "000089" "2010" "深圳市"                                                                   "大兴安岭" "大兴安岭地区"
  7. "000089" "2010" "深圳市"                                                                   "上海"       "上海市"         
  8. "000089" "2010" "深圳市"                                                                   "南京"       "南京市"         
  9. "000089" "2010" "深圳市"                                                                   "无锡"       "无锡市"         
  10. "000089" "2010" "深圳市"                                                                   "徐州"       "徐州市"         
  11. "000089" "2010" "深圳市"                                                                   "常州"       "常州市"         
  12. "000089" "2010" "深圳市"                                                                   "苏州"       "苏州市"         
  13. "000089" "2010" "深圳市"                                                                   "南通"       "南通市"         
  14. "000089" "2010" "深圳市"                                                                   "连云港"    "连云港市"      
  15. "000099" "2010" "北京"                                                                      "淮安"       "淮安市"         
  16. "000099" "2010" "深圳"                                                                      "盐城"       "盐城市"         
  17. "000155" "2010" "四川省成都市青白江区"                                              "扬州"       "扬州市"         
  18. "000155" "2010" "成都市"                                                                   "镇江"       "镇江市"         
  19. "000155" "2010" "四川省泸州市合江县榕山镇"                                        "泰州"       "泰州市"         
  20. "000155" "2010" "四川省成都市青白江区"                                              "宿迁"       "宿迁市"         
  21. "000155" "2010" "四川省成都市青白江区"                                              "杭州"       "杭州市"         
  22. "000155" "2010" "成都市"                                                                   "宁波"       "宁波市"         
  23. "000159" "2010" "乌鲁木齐市团结路45号"                                               "温州"       "温州市"         
  24. "000159" "2010" "乌鲁木齐市北京南路22号龙岭大厦412号"                          "嘉兴"       "嘉兴市"         
  25. "000159" "2010" "博尔塔拉蒙古自治州"                                                 "湖州"       "湖州市"         
  26. "000159" "2010" "奎屯市"                                                                   "绍兴"       "绍兴市"         
  27. "000159" "2010" "拜城县红旗路16号"                                                     "金华"       "金华市"         
  28. "000159" "2010" "哈密市爱国北路21号"                                                  "衢州"       "衢州市"         
  29. "000159" "2010" "乌鲁木齐市四十户路189号"                                           "舟山"       "舟山市"         
  30. "000159" "2010" "北京"                                                                      "台州"       "台州市"         
  31. "000159" "2010" "香港Rooms 407-10,4th Floor,Tower Two,Lippo Centre,89 Queensway,Hong Kong." "丽水"       "丽水市"         
  32. "000159" "2010" "乌鲁木齐市头屯河区王家沟工业园区"                            "合肥"       "合肥市"         
  33. "000401" "2010" "河北省三河市"                                                          "芜湖"       "芜湖市"         
  34. "000401" "2010" "河北省唐山市古冶区"                                                 "蚌埠"       "蚌埠市"         
  35. end
复制代码



比如:
var1:北京 天津 石家庄  
var2:北京市 天津市 石家庄市
我想要
gen 判断变量=indexnot("北京",RegisterAddress)
replace RegisterAddress="北京市" if 北京==0
drop 判断变量

gen 判断变量=indexnot("天津",RegisterAddress)
replace RegisterAddress="天津市" if 天津==0
drop 判断变量


gen 判断变量=indexnot("石家庄",RegisterAddress)
replace RegisterAddress="石家庄市" if 石家庄==0
drop 判断变量







二维码

扫码加我 拉你入群

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

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

关键词:foreach Reach Stata tata For stata foreach循环

沙发
梧桐煜 发表于 2021-3-7 15:59:25 |只看作者 |坛友微信交流群
建议你用dataex命令贴一部分数据出来。还有就是能否简单地用两句话将你想要达到的效果表达出来?看这个帖子没明白你想要干嘛。

使用道具

藤椅
c630667927 发表于 2021-3-7 17:48:43 |只看作者 |坛友微信交流群
梧桐煜 发表于 2021-3-7 15:59
建议你用dataex命令贴一部分数据出来。还有就是能否简单地用两句话将你想要达到的效果表达出来?看这个帖子 ...
谢谢提醒,我对问题表述做了更改啦~

使用道具

板凳
黃河泉 在职认证  发表于 2021-3-8 07:46:58 |只看作者 |坛友微信交流群
这个问题看起来难度颇高 (至少对我),若论坛中无人回答,请考虑到 https://www.statalist.org/forums/ 去问,但你需要用英文好好叙述题目并附上代表性资料,即使是中文字体,应该也有人会回答。

使用道具

报纸
18621124866 发表于 2021-3-10 08:27:51 |只看作者 |坛友微信交流群
第一个命令没找到逻辑吧?第一个判断什么?

使用道具

地板
c630667927 发表于 2021-3-11 11:08:24 |只看作者 |坛友微信交流群
黃河泉 发表于 2021-3-8 07:46
这个问题看起来难度颇高 (至少对我),若论坛中无人回答,请考虑到 https://www.statalist.org/forums/ 去问 ...
好的,谢谢老师

使用道具

7
c630667927 发表于 2021-3-11 11:10:26 |只看作者 |坛友微信交流群
18621124866 发表于 2021-3-10 08:27
第一个命令没找到逻辑吧?第一个判断什么?
我的想法是,如果判断变量等于0,就意味着var1是注册地的子集,代表注册地里含有var1这个关键信息

使用道具

8
18621124866 发表于 2021-3-12 08:58:16 |只看作者 |坛友微信交流群
应该是截取字符串里的地级市信息,百度就有答案

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 13:53