我以下列方式生成了一个字符串变量:
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
我如何调整以使输出按照我在当前代码中排列的顺序显示?
答案 0 :(得分:2)
排序时的字符串变量必须按字母顺序排列,或者更一般地说是使用的字符串字符给出的顺序。如果映射到数字变量,则可以使用值标签定义来坚持不同的顺序。请参阅help
encode
和label
的{{1}}。
label def Category 1 "Pineapple" 2 "Mango" 3 "Apple" 4 "Orange"
encode Category, gen(Numeric) label(Category)
sort Numeric