I am trying to replace the nth word of a string and i am struggling to find an efficient way of doing it.
Below are a couple of ugly inefficient soloutions.
Code:
clear
set obs 1
local mytext = "to be or not to be, that is the question"
gen text = "`mytext'"
local wordN = wordcount("`mytext'")
gen newword= ""
forvalues i = 1/`wordN' {
if `i'==7 {
replace newword= newword + " "+"it"
}
else {
replace newword= newword + " "+ word(text, `i')
}
}
listCode:
clear
set obs 1
local mytext = "to be or not to be, that is the question"
gen text = "`mytext'"
split text, gen(word)
replace word7 = "it"
egen newword = concat(word*), punct(" ")
listI was imagining there was a function called subword(text,re) or something more direct and more efficient.
Thanks
Adrian
No comments:
Post a Comment