首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Stata:系统地替换字符串变量中的字符

Stata:系统地替换字符串变量中的字符
EN

Stack Overflow用户
提问于 2014-10-23 07:39:41
回答 1查看 27.1K关注 0票数 2

我观察到将犯罪代码作为字符串变量列出,但不是以我需要的格式。使用Stata 12,我想替换字符串变量中的一些子串。例如,我需要将CC的所有实例更改为18,将VC更改为75,将PC更改为35。如下所示:

代码语言:javascript
复制
Orginal Variable
CC547A1 | VC549F| PC5297

New Variable
18547A1 | 75549F | 355297

我需要更改的字符总是在开头。一些原始变量不需要更改。

我尝试使用substring命令来解决这个问题,但是我就是不能正确地调整代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-23 08:39:56

在这里,substr()函数(不是substring();不是命令)没有它的兄弟subinstr()那么有用。文档在同一位置:从help functions开始。

代码语言:javascript
复制
. clear 
. input str7 myvar 

         myvar
1. CC547A1
2. VC549F
3. PC5297
4. end 

. replace myvar = subinstr(myvar, "CC", "18", .) 
(1 real change made)

. replace myvar = subinstr(myvar, "VC", "75", .) 
(1 real change made)

. replace myvar = subinstr(myvar, "PC", "35", .) 
(1 real change made)

. list 

    +---------+
    |   myvar |
    |---------|
 1. | 18547A1 |
 2. |  75549F |
 3. |  355297 |
    +---------+

注意:上一个线程How do I find and replace a part of a string variable in Stata?

编辑问题的含义似乎是要替换的字符串只出现一次。如果这是假的,并且您只希望替换第一个出现的项,那么建议执行类似于subinstr(myvar, "CC", "18", 1)的操作,其中最后一个参数1规定了要进行的(最大)替换次数。在其他问题中,这个细节可能是至关重要的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26518974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档