楼主: toron
2925 3

[编程问题求助] STATA中如何进行循环复制或循环排序 [推广有奖]

  • 0关注
  • 2粉丝

讲师

39%

还不是VIP/贵宾

-

威望
0
论坛币
415 个
通用积分
50.2170
学术水平
8 点
热心指数
9 点
信用等级
3 点
经验
2186 点
帖子
103
精华
0
在线时间
872 小时
注册时间
2008-10-14
最后登录
2024-4-25

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位学友,我想生成一个变量,最终想要的变量是这样
x
1
2
3
.
.
.
261
1
2
3
.
.
.
261
...
循环出现1-261,一共要出现49017次。
我尝试两种方法均失败:
方法一:
set obs 261
gen x=_n
expand 49071
失败的原因:后面复制的1-261出现了分类排序,即出现的结果是这样:
1
1
1
1
1
...
2
2
2
....
3
3
3
...
261
261
261
.....
然后,需要进行排序,我又不会,按照1-261进行循环排序。

失败方法二:
set obs 261
gen x=_n

  • forv i=1/49017 {
  • gen var`i'=x
  • }
  • stack var*,into(newvar)


失败的原因:这种循环是通过生成新的变量,然后将横向变量转化为纵向。问题是:49017超过了横向新变量生成个数的限制。所以,不行。
请问各位学友,是否有办法解决我的问题,请不吝赐教!
谢谢!


二维码

扫码加我 拉你入群

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

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

关键词:Stata tata expand stack 变量生成

回帖推荐

黃河泉 发表于2楼  查看完整内容

帮你到美国 Stata 问了一下,得到回应为(两个方法):
沙发
黃河泉 在职认证  发表于 2017-9-3 17:25:45 |只看作者 |坛友微信交流群
帮你到美国 Stata 问了一下,得到回应为(两个方法):
  1. // Martyn Sherriff
  2. clear
  3. set obs 12793437
  4. gen t = 1 + mod(_n - 1, 261)

  5. // Nick Cox
  6. clear
  7. set obs `= 49017 * 261'
  8. egen counter = seq(), to(261)
复制代码
已有 1 人评分学术水平 收起 理由
夏目贵志 + 5 精彩帖子

总评分: 学术水平 + 5   查看全部评分

使用道具

藤椅
toron 发表于 2017-9-3 20:59:14 |只看作者 |坛友微信交流群
黃河泉 发表于 2017-9-3 17:25
帮你到美国 Stata 问了一下,得到回应为(两个方法):
多谢回复,尝试了,方法正确。
谢谢!

使用道具

板凳
夏目贵志 发表于 2017-9-4 03:14:55 |只看作者 |坛友微信交流群
黃河泉 发表于 2017-9-3 17:25
帮你到美国 Stata 问了一下,得到回应为(两个方法):
我以前一直是用第一种方法的。没想到居然还有第二种方法。感谢分享!

使用道具

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

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

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

GMT+8, 2024-5-1 19:47