按字母顺序对字符串变量中的字母进行排序

时间:2017-11-20 11:34:55

标签: stata

我需要在Stata中按字母顺序对字符串变量字母进行排序。有人可以建议一个命令或方法吗?

例如:我有一个包含1000个观察值的字符串变量。所以该方法会对字符(字母)进行排序:

School--chloos 
sort--orst
akramabad-dabamarka

1 个答案:

答案 0 :(得分:1)

对于大小的数据集,最简单的方法可能只是将expand数据短暂地发送到单独观察中具有每个字符的版本。您的问题会在大写和小写的情况下打开您的规则,但我会将您的示例"School"视为"chloos"字面上意味着使用小写字母。

clear 
input str9 sandbox 
"School" 
"sort" 
"akramabad" 
end 

gen length = length(sandbox) 
gen id = _n 
expand length 
bysort id : gen char = substr(lower(sandbox), _n, 1)
sort id char 
bysort id (char) : gen newbox = char[1] 
by id: replace newbox = newbox[_n-1] + char if _n > 1 
by id: replace newbox = newbox[_N] 
by id: keep if _n == 1 
drop length char 

list 

     +----------------------------+
     |   sandbox   id      newbox |
     |----------------------------|
  1. |    School    1      chloos |
  2. |      sort    2        orst |
  3. | akramabad    3   aaaabdkmr |
     +----------------------------+

为每个字母创建单独的变量并在观察中对它们进行排序似乎也是可能的。