楼主: junstata
14187 9

[一般统计问题] stata中对一列数据怎么依次取前一行、前两行……的最大值? [推广有奖]

  • 1关注
  • 0粉丝

高中生

32%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
264 点
帖子
11
精华
0
在线时间
38 小时
注册时间
2015-3-23
最后登录
2022-5-27

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如题。
比如说
set obs 10
gen x=uniform()
然后生成一列数,第一行的数据是x中前一行的最大值,第二行的数据是前两行的最大值,依次类推。请问这个怎么做?


再如果我要这样处理1*10^7个数,怎么做会快点?


谢谢!!
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 最大值 Uniform form 最大值

沙发
junstata 发表于 2015-6-27 11:13:29 |只看作者 |坛友微信交流群
自己顶!

使用道具

藤椅
蓝色 发表于 2015-6-27 19:05:56 |只看作者 |坛友微信交流群
看不明白你到底想做什么

使用道具

板凳
junstata 发表于 2015-6-27 19:49:53 |只看作者 |坛友微信交流群
蓝色 发表于 2015-6-27 19:05
看不明白你到底想做什么
比如说我有一列10个数:
2
3
4
2
4
6
8
9
2
4
如果我想生成另外一列数,第一行是上述这一列数的前一个的最大值,第二行是上述这一列数的前两个中的最大值,第三行是上述这一列数的前三个中的最大值……
这个要怎么做?

使用道具

报纸
andruw 在职认证  发表于 2015-6-27 20:17:58 |只看作者 |坛友微信交流群
junstata 发表于 2015-6-27 19:49
比如说我有一列10个数:
2
3
  1. clear

  2. . input  a

  3.              a
  4.   1.
  5. . 2
  6.   2. 3
  7.   3. 4
  8.   4. 2
  9.   5. 4
  10.   6. 6
  11.   7. 8
  12.   8. 9
  13.   9. 2
  14. 10. 4
  15. 11.
  16. . end

  17. .
  18. . list

  19.      +---+
  20.      | a |
  21.      |---|
  22.   1. | 2 |
  23.   2. | 3 |
  24.   3. | 4 |
  25.   4. | 2 |
  26.   5. | 4 |
  27.      |---|
  28.   6. | 6 |
  29.   7. | 8 |
  30.   8. | 9 |
  31.   9. | 2 |
  32. 10. | 4 |
  33.      +---+

  34. . count
  35.    10

  36. . local n = r(N)

  37. . gen b = .
  38. (10 missing values generated)

  39. . list

  40.      +-------+
  41.      | a   b |
  42.      |-------|
  43.   1. | 2   . |
  44.   2. | 3   . |
  45.   3. | 4   . |
  46.   4. | 2   . |
  47.   5. | 4   . |
  48.      |-------|
  49.   6. | 6   . |
  50.   7. | 8   . |
  51.   8. | 9   . |
  52.   9. | 2   . |
  53. 10. | 4   . |
  54.      +-------+

  55. . forval i = 1/`n'{
  56.   2.  egen c = max(a) if _n <= `i'
  57.   3.  replace b = c in `i'
  58.   4.  drop c
  59.   5.  }
  60. (9 missing values generated)
  61. (1 real change made)
  62. (8 missing values generated)
  63. (1 real change made)
  64. (7 missing values generated)
  65. (1 real change made)
  66. (6 missing values generated)
  67. (1 real change made)
  68. (5 missing values generated)
  69. (1 real change made)
  70. (4 missing values generated)
  71. (1 real change made)
  72. (3 missing values generated)
  73. (1 real change made)
  74. (2 missing values generated)
  75. (1 real change made)
  76. (1 missing value generated)
  77. (1 real change made)
  78. (1 real change made)

  79. . list

  80.      +-------+
  81.      | a   b |
  82.      |-------|
  83.   1. | 2   2 |
  84.   2. | 3   3 |
  85.   3. | 4   4 |
  86.   4. | 2   4 |
  87.   5. | 4   4 |
  88.      |-------|
  89.   6. | 6   6 |
  90.   7. | 8   8 |
  91.   8. | 9   9 |
  92.   9. | 2   9 |
  93. 10. | 4   9 |
  94.      +-------+
复制代码

使用道具

地板
andruw 在职认证  发表于 2015-6-27 20:18:40 |只看作者 |坛友微信交流群
andruw 发表于 2015-6-27 20:17
  1. clear
  2. input  a

  3. 2
  4. 3
  5. 4
  6. 2
  7. 4
  8. 6
  9. 8
  10. 9
  11. 2
  12. 4

  13. end

  14. list
  15. count
  16. local n = r(N)
  17. gen b = .
  18. list
  19. forval i = 1/`n'{
  20. egen c = max(a) if _n <= `i'
  21. replace b = c in `i'
  22. drop c
  23. }
  24. list
复制代码

使用道具

7
junstata 发表于 2015-6-28 09:19:58 |只看作者 |坛友微信交流群
andruw 发表于 2015-6-27 20:18
非常感谢!又知道了新的东西!

使用道具

8
junstata 发表于 2015-7-9 10:05:07 |只看作者 |坛友微信交流群
andruw 发表于 2015-6-27 20:18
你好!如果有10000000个数据,按照这个程序走实在太慢。。请问有没有更快的方法能处理?谢谢!

使用道具

9
andruw 在职认证  发表于 2015-7-9 16:52:30 |只看作者 |坛友微信交流群
junstata 发表于 2015-7-9 10:05
你好!如果有10000000个数据,按照这个程序走实在太慢。。请问有没有更快的方法能处理?谢谢!
有人问类似的问题:
https://bbs.pinggu.org/thread-3790020-1-1.html
  1. clear
  2. set obs 10000000
  3. gen x=uniform()
  4. gen xm = x[1]
  5. replace xm = cond(x > xm[_n-1], x, xm[_n-1]) if _n >= 2
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
junstata + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

10
junstata 发表于 2015-7-9 22:27:59 |只看作者 |坛友微信交流群
andruw 发表于 2015-7-9 16:52
有人问类似的问题:
https://bbs.pinggu.org/thread-3790020-1-1.html
好的谢谢!发现是我的基本功太差。。

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-2 02:56