如何按照我在代码中生成它的顺序对字符串变量进行排序?

时间:2016-04-25 14:05:48

标签: stata

我以下列方式生成了一个字符串变量:

gen Category = "none"
replace Category = "Pineapple" if d == 400 | d == 800
replace Category = "Mango" if d == 300 | d == 700
replace Category = "Apple" if d == 200 | d == 600
replace Category = "Orange" if d == 100 | d == 500

sort Category 
by Category, sort: egen Total_volume = sum(volume)

sort  Category
quietly by  Category:  gen dup = cond(_N==1,0,_n)
drop if dup>1
drop dup

最后,我希望有一个按类别排序的输出,并按顺序显示:

>     Category    Total_volume
>     Pineapple   2929
>     Mango    5454
>     Apple   1020
>     Orange   5055

然而,通过运行代码,一些观察结果被删除,以便获得一行总容量的总和,我到目前为止得到的是字母顺序。

>     Category    Total_volume
>     Apple   1020
>     Mango    5454
>     Orange   5055
>     Pineapple   2929

我如何调整以使输出按照我在当前代码中排列的顺序显示?

1 个答案:

答案 0 :(得分:2)

排序时的字符串变量必须按字母顺序排列,或者更一般地说是使用的字符串字符给出的顺序。如果映射到数字变量,则可以使用值标签定义来坚持不同的顺序。请参阅help encodelabel的{​​{1}}。

label def Category 1 "Pineapple" 2 "Mango" 3 "Apple" 4 "Orange" 
encode Category, gen(Numeric) label(Category)
sort Numeric