楼主: ENNAF
418 7

[编程问题求助] STATA如何筛选出变量中是否包含字母? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

60%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
2.2528
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
521 点
帖子
56
精华
0
在线时间
279 小时
注册时间
2016-1-7
最后登录
2024-4-30

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str10 symbol float jy
  4. "ADP"    0
  5. "1020"   0
  6. "3048"   0
  7. "3853"   0
  8. "  45ex" 0
  9. end
复制代码



RT,我想筛选出变量 symbol(字符类型)中包含英文字母的数据,

foreach zm in "A" "B" "C""D" "E" "F" "G" "H" "I""J" "K" "L" "M" "N" "O""P" "Q" "R" "S" "T" "U""V" "W" "X" "Y" "Z" "a""b" "c" "d" "e" "f" "g""h" "i" "j" "k" "l" "m""n" "o" "p" "q" "r" "s""t" "u" "v" "w" "x" "y""z"{

replace jy=1 if strmatch(symbol, "zm")==1

}

结果是0 real changes made...

请问各位大佬,为什么筛选不出来呢?是Unicode或ASCII码的问题吗?应该怎么做?



二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 筛选出 generated generate

回帖推荐

黃河泉 发表于7楼  查看完整内容

请看看

黃河泉 发表于4楼  查看完整内容

根据 ChatGPT4 的 Data Analyst:你可以使用 Stata 的 `regexm()` 函数来检查 `symbol` 变量中是否包含任何英文字母,并据此创建新变量 `d`。`regexm()` 函数用于正则表达式匹配,能够检查一个字符串是否符合特定的模式。在这个例子中,正则表达式模式是 `[a-zA-Z]`,它代表任何大小写英文字母。 以下是相应的 Stata 命令:这条命令创建了一个新变量 `d`,如果 `symbol` 中包含至少一个大小写英文字母,`d` 将为 1,否则为 0。我 ...
沙发
wdlbcj 学生认证  发表于 2024-3-7 13:47:24 |只看作者 |坛友微信交流群
你要做的是是否包含这些字母 你写的命令是 这个观测值是不是ABCD
所以出了问题

使用道具

藤椅
ENNAF 发表于 2024-3-7 17:24:20 |只看作者 |坛友微信交流群
wdlbcj 发表于 2024-3-7 13:47
你要做的是是否包含这些字母 你写的命令是 这个观测值是不是ABCD
所以出了问题
你好!请问,是指strmatch是判断是否完全匹配的命令吗?那应该要用哪个命令才可以实现啊?我搜了下indexnot还有regexm好像都涉及unicode编码的问题,但我的整个dta是有汉字的,不知道如果再去调整编码会不会影响到其他变量...

使用道具

板凳
黃河泉 在职认证  发表于 2024-3-7 18:46:44 |只看作者 |坛友微信交流群
根据 ChatGPT4 的 Data Analyst:你可以使用 Stata 的 `regexm()` 函数来检查 `symbol` 变量中是否包含任何英文字母,并据此创建新变量 `d`。`regexm()` 函数用于正则表达式匹配,能够检查一个字符串是否符合特定的模式。在这个例子中,正则表达式模式是 `[a-zA-Z]`,它代表任何大小写英文字母。

以下是相应的 Stata 命令:
  1. gen d = regexm(symbol, "[a-zA-Z]")
复制代码
这条命令创建了一个新变量 `d`,如果 `symbol` 中包含至少一个大小写英文字母,`d` 将为 1,否则为 0。我试了一下,还是可以的。

使用道具

报纸
ENNAF 发表于 2024-3-7 19:44:38 |只看作者 |坛友微信交流群
黃河泉 发表于 2024-3-7 18:46
根据 ChatGPT4 的 Data Analyst:你可以使用 Stata 的 `regexm()` 函数来检查 `symbol` 变量中是否包含任何 ...
谢谢老师!可以用!帮大忙了,非常感谢!
想再问一下,我之前用regexm试过,但也返回0 real changes made,可以请教一下是哪里出错了吗?
foreach zm in "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"{
replace jy=1 if regexm(symbol,"zm")==1
}

使用道具

地板
ENNAF 发表于 2024-3-7 20:25:39 |只看作者 |坛友微信交流群
ENNAF 发表于 2024-3-7 19:44
谢谢老师!可以用!帮大忙了,非常感谢!
想再问一下,我之前用regexm试过,但也返回0 real chang ...
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. gen jy=0
  3. foreach zm in "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
  4. {
  5. replace jy=1 if regexm(symbol,"zm")==1
  6. }
复制代码

使用道具

7
黃河泉 在职认证  发表于 2024-3-8 09:11:27 |只看作者 |坛友微信交流群
ENNAF 发表于 2024-3-7 19:44
谢谢老师!可以用!帮大忙了,非常感谢!
想再问一下,我之前用regexm试过,但也返回0 real chang ...
请看看
  1. foreach zm in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z {
  2. replace jy=1 if regexm(symbol,"`zm'")==1
  3. }
复制代码

使用道具

8
ENNAF 发表于 2024-3-8 23:04:10 |只看作者 |坛友微信交流群
黃河泉 发表于 2024-3-8 09:11
请看看
原来如此!我还以为ABCD是字符串必须要加上双引号才可以...一直也找不到完整的例子或者具体的格式可参考...谢谢黄老师的耐心回复[em23][em23]

使用道具

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

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

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

GMT+8, 2024-5-1 01:20