我需要在Stata中按字母顺序对字符串变量字母进行排序。有人可以建议一个命令或方法吗?
例如:我有一个包含1000个观察值的字符串变量。所以该方法会对字符(字母)进行排序:
School--chloos
sort--orst
akramabad-dabamarka
答案 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 |
+----------------------------+
为每个字母创建单独的变量并在观察中对它们进行排序似乎也是可能的。