楼主: junqinryoma
4165 8

[编程问题求助] 急求!横向排序并生成排名序列 [推广有奖]

  • 0关注
  • 1粉丝

VIP1

本科生

42%

还不是VIP/贵宾

-

威望
0
论坛币
2098 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
324 点
帖子
23
精华
0
在线时间
156 小时
注册时间
2013-7-5
最后登录
2016-5-20

楼主
junqinryoma 发表于 2014-11-7 16:36:46 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
district in1 in2 in3 in4
1 6862 3644 11274 327
2 1008 560 1300 237
3 37188 5630 3951 765
4 8291 8108 3541 174
数据大概是这样的形式,源数据有80多列,数据为每个产业的就业人数叫做Xi现在我需要计算一个指标是每个地区的就业人数按照从小到大的顺序排列,即排成X1<X2<……<Xn的形式,然后计算∑(i*Xi)以第一行为例,就是要得到1*327+2*3644+3*6862+4*11274的答案
求问这个是怎么编程序啊???


我试了用foreach命令
foreach i of numlist 1/83{
gen x`i'=`i'*in`i'
}
egen y=rowtotal(x1-x83)

但是这样算出来的只是1*6862+2*3644+3*11274+4*327的答案,这里的顺序没有按照升序排列


请问大神如何修改程序!!急求!!
二维码

扫码加我 拉你入群

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

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

关键词:就业人数 从小到大 Istr IST Dis 就业

沙发
ywh19860616 发表于 2014-11-7 17:20:08
每一行都要运算?还是只是以第一行为标准?

藤椅
junqinryoma 发表于 2014-11-7 17:20:40
ywh19860616 发表于 2014-11-7 17:20
每一行都要运算?还是只是以第一行为标准?
每一行都要,我只是以第一行为例子,怕我自己文字表达不清楚。。。

板凳
ywh19860616 发表于 2014-11-7 19:47:31
junqinryoma 发表于 2014-11-7 17:20
每一行都要,我只是以第一行为例子,怕我自己文字表达不清楚。。。
  1. clear
  2. input district in1 in2 in3 in4
  3. 1 6862 3644 11274 327
  4. 2 1008 560 1300 237
  5. 3 37188 5630 3951 765
  6. 4 8291 8108 3541 174
  7. end

  8. xpose, clear varname
  9. foreach x of varlist v1-v4 {
  10. sort `x'
  11. egen v`x' = total(`x'*_n)
  12. }
复制代码
这样?

报纸
ywh19860616 发表于 2014-11-7 20:00:02
  1. clear
  2. input district in1 in2 in3 in4
  3. 1 6862 3644 11274 327
  4. 2 1008 560 1300 237
  5. 3 37188 5630 3951 765
  6. 4 8291 8108 3541 174
  7. end

  8. xpose, clear varname
  9. foreach x of varlist v1-v4 {
  10. sort `x'
  11. egen v`x' = total(`x'*_n)
  12. }

  13. local new = _N + 1
  14. set obs `new'

  15. forv i = 1/4 {
  16. replace v`i' = vv`i'[1] in `=_N'
  17. }

  18. keep v1 v2 v3 v4
  19. xpose,clear
复制代码
已有 1 人评分经验 论坛币 学术水平 热心指数 收起 理由
hustchen2012 + 24 + 12 + 2 + 3 精彩帖子

总评分: 经验 + 24  论坛币 + 12  学术水平 + 2  热心指数 + 3   查看全部评分

地板
junqinryoma 发表于 2014-11-8 10:08:18
ywh19860616 发表于 2014-11-7 20:00
算出来还是不对啊( >﹏<。)~求大神再指教= =

7
ywh19860616 发表于 2014-11-8 10:28:30
junqinryoma 发表于 2014-11-8 10:08
算出来还是不对啊( >﹏
  1. clear
  2. input district in1 in2 in3 in4
  3. 1 6862 3644 11274 327
  4. 2 1008 560 1300 237
  5. 3 37188 5630 3951 765
  6. 4 8291 8108 3541 174
  7. end

  8. drop district
  9. xpose, clear varname

  10. foreach x of varlist v1-v4 {
  11. sort `x'
  12. egen v`x' = total(`x'*_n)
  13. }

  14. local new = _N + 1
  15. set obs `new'

  16. forv i = 1/4 {
  17. replace v`i' = vv`i'[1] in `=_N'
  18. }



  19. keep v1 v2 v3 v4
  20. xpose,clear
  21. rename v5 myresult


  22. // check the results
  23. di 327*1 + 3644*2 + 6862*3 + 11274*4
  24. di 237*1 + 560*2 + 1008*3 + 1300*4
复制代码
ps:Sorry for my mistake

8
ywh19860616 发表于 2014-11-8 10:29:44
  1. . list

  2.      +---------------------------------------+
  3.      |  v1      v2     v3      v4   myresult |
  4.      |---------------------------------------|
  5.   1. | 327   11274   3644    6862      73297 |
  6.   2. | 237    1300    560    1008       9581 |
  7.   3. | 765    3951   5630   37188     174309 |
  8.   4. | 174    3541   8108    8291      64744 |
  9.      +---------------------------------------+


  10. . // check the results
  11. . di 327*1 + 3644*2 + 6862*3 + 11274*4
  12. 73297

  13. . di 237*1 + 560*2 + 1008*3 + 1300*4
  14. 9581
复制代码

9
junqinryoma 发表于 2014-11-8 12:09:51
ywh19860616 发表于 2014-11-8 10:28
ps:Sorry for my mistake
可以了!!真是太感谢了!!!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-2 16:02