Stataで文字列の操作

本当だったらエクセルでやると楽な気がするけど、エクセルは110万行(ぐらい)以上のデータを読み込めなかったりして不便なのでStataでやっちゃおうというお話。

まず、いらない文字を消したいケースを考える。

ここでは、nameという変数に会社の名前が入っていて、(株)だったり株式会社だったり名前の付け方が統一されていないとする。そうすると、これらの文字を消してしまえばよい。

そこで使うのが、subinstr()という関数。

使い方は、

replace name = subinstr(name, "消したい文字", "置き換えたい文字", .)

という感じ。ここでは、"(株)"や"株式会社"を""に置き換えたいので

replace name =subinstr(name, "株式会社", "", .)

とするとOK


次に、最初から3文字とか後ろから5文字とかを取り出したいときに使うものを紹介する。

これは、先ほどと少し似たsubstr()というものを使用する。

例えば、"○×商事株式会社"というものの最初4文字を取り出したければ

substr("○×商事株式会社", 1, 4)

とする。これは、1文字目から4文字目を取り出す言う意味。(今回の例は文字が全角なので厳密には違った気がするけど気にしない)

逆に、後ろ4文字とかだと

substr("○×商事株式会社", -4, 4)

これは、後ろから4文字目(-4)から4文字を取り出すという意味。

ということは、2文字目から5文字目までとか、後ろ3文字目から2文字とかいろいろできて、それぞれsubstr("○×商事株式会社", 2, 5), substr("○×商事株式会社", 2, 5)となる。

そして、何文字目にあるのかわからないが特定の文字より前(うしろ)だけを取り出したいときのためにstrposというものも紹介しておく。これは、指定した文字が何文字目にあるのかを返してくれる。

例えば、「大阪市、神戸市」みたいなデータがあり区切りたいときは

generate splitat = strpos(name ,"、")

とすれば何文字目に"、"があるのかを返してくれる。

そこで、"、"の前のものをcity1,という名前を付けるとすると

generate city1 = substr(institutions, 1, splitat - 1)

とすることで欲しかった"大阪市"というものが手に入る。

この記事が気に入ったらサポートをしてみませんか?