楼主: xlgray
39958 12

[数据管理求助] stata中如何排列变量观察值的顺序? [推广有奖]

  • 2关注
  • 0粉丝

已卖:1份资源

博士生

73%

还不是VIP/贵宾

-

威望
0
论坛币
14 个
通用积分
11.6577
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5405 点
帖子
108
精华
0
在线时间
529 小时
注册时间
2005-12-16
最后登录
2023-5-24

楼主
xlgray 发表于 2009-7-10 08:41:58 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我知道的只有sort和gsort两个命令,但这两个命令只能实现升序或降序排列。
请问在stata中,有没有什么命令可以直接让观察值按照人为规定的顺序排列呢?
我知道一个方法可以这样,但是需要编一大段程序,挺麻烦。不知道有没有简单的命令。
谢谢啦!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata tata 降序排列 有没有 SOR 如何 程序

沙发
蓝色 发表于 2009-7-10 09:06:45
看错了

那你就得具体说到底想怎么排序

藤椅
voodoo 发表于 2009-7-10 11:12:54
xlgray 发表于 2009-7-10 08:41
我知道的只有sort和gsort两个命令,但这两个命令只能实现升序或降序排列。
请问在stata中,有没有什么命令可以直接让观察值按照人为规定的顺序排列呢?
我知道一个方法可以这样,但是需要编一大段程序,挺麻烦。不知道有没有简单的命令。
谢谢啦!
2#的方法不对,可能误解了你的意思。


你能否把“挺麻烦”的程序说个大概或把问题、目标、数据结构说清楚?省得大家去揣度你的意思,更麻烦!
试试:

recode ..., gen(newvar)
sort newvar

gen newvar = 1 if inrange(oldvar, 1, 3)
replace newvar = 0 if inrange(oldvar, 3, 5.5)
...
sort newvar

再补充一个:
gen newvar = cond(inrange(oldvar, 1, 3), 1, (cond(oldvar, 3, 5.5), 2, (......) ) )   // 用cond()套嵌
sort newvar
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Lyndon-he + 1 + 1 + 1 + 1 精彩帖子
SpencerMeng + 100 + 1 + 1 观点有启发

总评分: 经验 + 100  论坛币 + 1  学术水平 + 2  热心指数 + 2  信用等级 + 1   查看全部评分

巫毒上传,必属佳品!
坛友下载,三思后行!

板凳
stein 发表于 2009-7-10 11:48:26
sort,resort

报纸
xlgray 发表于 2009-7-10 12:01:39
3# voodoo


我用的方法和你的差不多,也是生成一个新的变量code,
然后,对于想放在第一位的观察值,令code=1,对于想放在第二位的观察值,令code=2,依次类推……
最后 sort code 即可。

因为对每一个观察值都要设定code的值,所以如果观察值较多的话,就要写很多行代码,所以很麻烦。

地板
蓝色 发表于 2009-7-10 12:19:29
xlgray 发表于 2009-7-10 12:01
3# voodoo


我用的方法和你的差不多,也是生成一个新的变量code,
然后,对于想放在第一位的观察值,令code=1,对于想放在第二位的观察值,令code=2,依次类推……
最后 sort code 即可。

因为对每一个观察值都要设定code的值,所以如果观察值较多的话,就要写很多行代码,所以很麻烦。
你总的说个规则或者什么的东西。
对应不同的要求是不同的。

7
sungmoo 发表于 2009-7-10 12:44:35
xlgray 发表于 2009-7-10 08:41 我知道的只有sort和gsort两个命令,但这两个命令只能实现升序或降序排列。请问在stata中,有没有什么命令可以直接让观察值按照人为规定的顺序排列呢?
“升序”与“降序”,本身就是“人为规定的顺序”——“升”与“降”并没有天然的意义,仍然是人们规定的(比如按音序、姓氏笔画序)。

任何序,也都可以理解为一种“升序”或“降序”吧?(这正是编程的基础)

8
voodoo 发表于 2009-7-10 13:01:13
xlgray 发表于 2009-7-10 12:01
3# voodoo
因为对每一个观察值都要设定code的值,所以如果观察值较多的话,就要写很多行代码,所以很麻烦。
假如你有个obs→code的规则的话,就可以简化(可能只在很小程度上),否则还是老老实实不怕麻烦手工做吧。

举个类比,假如我们要输入的是1 2 3 4 5 6 7 8 9 10或2 4 6 8 9 10 12 14 16,可用一个规则生成,此时编程一个语句足够,但若要输入3 8 5 6 7 2 9 9 10 14 11 5 8, 则恐怕只能手工输入了——编程只会使问题更“麻烦”!
巫毒上传,必属佳品!
坛友下载,三思后行!

9
ztl2013518 学生认证  发表于 2014-7-11 21:06:44
好。。。。。。。。。。。。。。。

10
单名一个苗 发表于 2014-11-3 10:55:34
voodoo 发表于 2009-7-10 11:12
2#的方法不对,可能误解了你的意思。
详细,赞!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-9 14:12