楼主: abcsk
2667 7

[编程问题求助] stata如何从一个变量中搜索包含另外变量的字符串 [推广有奖]

  • 2关注
  • 9粉丝

副教授

94%

还不是VIP/贵宾

-

威望
0
论坛币
19470 个
通用积分
34.0985
学术水平
20 点
热心指数
41 点
信用等级
26 点
经验
15873 点
帖子
394
精华
1
在线时间
924 小时
注册时间
2008-7-5
最后登录
2024-4-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在表1的数据中,有一列为“专利分类号”;表2中列为“绿色分类号”。我希望从“专利分类号中”搜索绿色分类号标识,只要专利分类号中含有绿色分类号中的任何一个,就记为1,否则为0.
我使用了strmatch命令,但是,该命令只搜同一行中,专利分类号是否包含了同一行中的绿色分类号,
我是希望对专利分类号搜索所有绿色分类号,例如第一行,专利分类号为:G06Q40/00; G07F19/00,包含了2个,与式去绿色分类号所有行中搜索,只要出现了G06Q40/00 或G07F19/00,就表明该专利分类号是绿色的。
请问该如何写代码?
求指点,不胜感激!

表1
上市公司代码公开日专利分类主分类号专利分类号
00000120111207

1

G06Q40/00G06Q40/00;G07F19/00
00000220110921

3

02-0302-03
00000220111005

2

A42B1/08A42B1/08;A42C5/00
00000220111214

1

E04G21/20E04G21/20
00000220120711

1

E04G21/00E04G21/00;B01F15/00;B01F3/12;B28D1/22
00000220110921

2

E04G21/00E04G21/00;E04B1/343;E04H1/12
00000220110921

2

B28D1/00B28D1/00
00000220110921

2

B27B5/00B27B5/00
00000220110921

2

B01F15/00B01F15/00;B01F3/12
00000220120704

1

G01B21/30G01B21/30
00000220110504

2

E04H1/02E04H1/02;E04H1/04
00000220110504

2

E04H1/02E04H1/02
00000220100303

1

E04C3/20E04C3/20
00000220100303

1

E04B1/38E04B1/38;E04B1/58;E04C3/20
00000220100303

1

E04B5/04E04B5/04;E04C3/20;E04B1/38;E04B1/41
00001220100721

2

G02F1/1335G02F1/1335
00001220110525

2

B65D85/48B65D85/48;B65D81/05;B65D61/00
00001220110525

2

B65D85/48B65D85/48;B65D61/00;B65D71/00

表2
绿色分类号
C10L5/00
C10L5/40
C10L5/41
C10L5/42
C10L5/43
C10L5/44
C10L5/45
C10L5/46
C10L5/47
C10L5/48
B01F15/00
G01B21/30
E04H1/02
E04B5/04
G02F1/1335
B65D85/48


二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 字符串 Match ATCH

沙发
wdlbcj 学生认证  发表于 2021-7-6 20:27:43 |只看作者 |坛友微信交流群
想到的方法是 写一个循环 来检查一下 是不是包含所有的绿色分类号

使用道具

藤椅
黃河泉 在职认证  发表于 2021-7-7 07:31:11 |只看作者 |坛友微信交流群
你若要问程序,请用 (ssc install) dataex 附上相关`代表性’资料 (请尽量不要用截图或其他格式),以供回答者实验之用。请参考说明 https://bbs.pinggu.org/thread-5048204-1-1.htmlhttps://zhuanlan.zhihu.com/p/29911577

使用道具

板凳
海阔天空锦鲤 学生认证  发表于 2021-7-14 10:05:53 |只看作者 |坛友微信交流群
请问楼主知道了么,能否告知下,不胜感激

使用道具

报纸
zdlspace 学生认证  发表于 2021-7-15 17:28:50 |只看作者 |坛友微信交流群
海阔天空锦鲤 发表于 2021-7-14 10:05
请问楼主知道了么,能否告知下,不胜感激
写了一个循环,
  1. clear
  2. input str40 专利分类号
  3. "G06Q40/00;G07F19/00"
  4. "02-03"
  5. "A42B1/08;A42C5/00"
  6. "E04G21/20"
  7. "E04G21/00;B01F15/00;B01F3/12;B28D1/22"
  8. "E04G21/00;E04B1/343;E04H1/12"
  9. "B28D1/00"
  10. "B27B5/00"
  11. "B01F15/00;B01F3/12"
  12. "G01B21/30"
  13. "E04H1/02;E04H1/04"
  14. "E04H1/02"
  15. "E04C3/20"
  16. "E04B1/38;E04B1/58;E04C3/20"
  17. "E04B5/04;E04C3/20;E04B1/38;E04B1/41"
  18. "G02F1/1335"
  19. "B65D85/48;B65D81/05;B65D61/00"
  20. "B65D85/48;B65D61/00;B65D71/00"
  21. end

  22. input str40 绿色分类号
  23. "C10L5/00"  
  24. "C10L5/40"  
  25. "C10L5/41"  
  26. "C10L5/42"  
  27. "C10L5/43"  
  28. "C10L5/44"  
  29. "C10L5/45"  
  30. "C10L5/46"  
  31. "C10L5/47"  
  32. "C10L5/48"  
  33. "B01F15/00"
  34. "G01B21/30"
  35. "E04H1/02"  
  36. "E04B5/04"  
  37. "G02F1/1335"
  38. "B65D85/48"
  39. end

  40. split 专利分类号,parse(;)
  41. gen d=0
  42. levelsof 绿色分类号,local(green)

  43. forval i=1/4{
  44.         foreach m of local green {
  45.              replace d=1 if 专利分类号`i'=="`m'"
  46.         }
  47. }

  48. drop 专利分类号1-专利分类号4
  49. list,sep(6) noobs

  50. +--------------------------------------------------------+
  51. |                            专利分类号   绿色分类号   d    |
  52. |--------------------------------------------------------|
  53. |                   G06Q40/00;G07F19/00     C10L5/00   0 |
  54. |                                 02-03     C10L5/40   0 |
  55. |                     A42B1/08;A42C5/00     C10L5/41   0 |
  56. |                             E04G21/20     C10L5/42   0 |
  57. | E04G21/00;B01F15/00;B01F3/12;B28D1/22     C10L5/43   1 |
  58. |          E04G21/00;E04B1/343;E04H1/12     C10L5/44   0 |
  59. |--------------------------------------------------------|
  60. |                              B28D1/00     C10L5/45   0 |
  61. |                              B27B5/00     C10L5/46   0 |
  62. |                    B01F15/00;B01F3/12     C10L5/47   1 |
  63. |                             G01B21/30     C10L5/48   1 |
  64. |                     E04H1/02;E04H1/04    B01F15/00   1 |
  65. |                              E04H1/02    G01B21/30   1 |
  66. |--------------------------------------------------------|
  67. |                              E04C3/20     E04H1/02   0 |
  68. |            E04B1/38;E04B1/58;E04C3/20     E04B5/04   0 |
  69. |   E04B5/04;E04C3/20;E04B1/38;E04B1/41   G02F1/1335   1 |
  70. |                            G02F1/1335    B65D85/48   1 |
  71. |         B65D85/48;B65D81/05;B65D61/00                1 |
  72. |         B65D85/48;B65D61/00;B65D71/00                1 |
  73. +--------------------------------------------------------+
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

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

使用道具

地板
海阔天空锦鲤 学生认证  发表于 2021-11-29 21:13:00 |只看作者 |坛友微信交流群
zdlspace 发表于 2021-7-15 17:28
写了一个循环,
感谢回复,上面循环可以省去写多行替换的命令,太强了,谢谢!

使用道具

7
落叶无雨 学生认证  发表于 2022-4-18 12:24:38 |只看作者 |坛友微信交流群
i-j 嵌套循环: replace d = 1 in `i' if regexm(专利分类号`i',绿色分类号`j')

使用道具

8
木子心晴 发表于 2023-10-12 11:35:15 |只看作者 |坛友微信交流群
我遇到了类似的问题,我是这样解决的,仅供参考。表2绿色分类号后边加一列变量都是1,然后将表2和表1横向匹配一下就可以了,匹配时候表2绿色分类号变量名称改为“专利分类号”,用专利分类号一匹配,最后表格中的最后一列是1就是你要的结果。

使用道具

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

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

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

GMT+8, 2024-5-21 06:54