如何在Stata中将字符串仅拆分为两部分且保留后续内容?
Stata 实现字符串拆分:保留第一个分隔符后的全部内容
问题背景
现有如下Stata测试数据:
clear all set obs 2 gen title = "dog - cat - horse" in 1 replace title = "chicken - frog - ladybug" in 2 tempfile data save `data'
使用自带的split命令时:
split title, p(" - ")会将字符串拆分为3个变量;split title, p(" - ") limit(2)仅拆分出前两部分,直接丢弃第三部分内容。
需求:希望仅拆分出两个变量,第一个分隔符(此处为" - ")后的所有内容全部归入第二个变量,例如第一行数据中title1为dog,title2为cat - horse,类似R语言separate命令搭配extra="merge"参数的效果。
解决方案
方案1:第三方命令 separate(推荐,一步到位)
这是最贴合需求的现成命令,先执行安装:
ssc install separate
执行拆分命令,通过extra(merge)参数实现后续内容合并:
separate title, by(" - ") into(title1 title2) extra(merge)
执行后即可得到目标变量:title1为分隔符前的内容,title2包含第一个分隔符后的所有内容。
方案2:自带命令组合实现(无需额外安装)
如果不想安装第三方命令,可通过strpos定位分隔符位置,再用substr提取内容:
gen title1 = substr(title, 1, strpos(title, " - ") - 1) gen title2 = substr(title, strpos(title, " - ") + 3, .)
注:+3是因为分隔符" - "包含3个字符(空格、短横线、空格),需要跳过这部分内容。
内容的提问来源于stack exchange,提问作者bill999
相关产品推荐
相关产品推荐

