楼主: Henryzhu
4360 3

请教用forvalue或者tempvar等命令可以生成如下形式的name1,name2,name3. [推广有奖]

  • 6关注
  • 61粉丝

已卖:314份资源

教授

89%

还不是VIP/贵宾

-

威望
0
论坛币
11959 个
通用积分
0.2415
学术水平
45 点
热心指数
76 点
信用等级
24 点
经验
86502 点
帖子
1419
精华
0
在线时间
1026 小时
注册时间
2010-11-23
最后登录
2022-1-9

受到警告 楼主
Henryzhu 在职认证  发表于 2012-11-19 15:27:45 |AI写论文
提示: 受到警告  蓝色 发帖格式不符规定,请参照版规发贴,谢谢 ; ... 2012-11-19 15:34

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
小弟不才,在处理数据的时候碰到了根据需要生成如下要求的形式的变量name1, name2, name3,
所以想请教以下达人,万分感谢:)
附件中是Stata的do文件,由于上传的时候不支持do文件,所以我就设置成了txt文件,
问题表述可能有点啰嗦,敬请谅解!

比如我有如下形式的data,
变量名有:
type  groupid num1 num2 name
我想根据groupid, 生成新的变量name1, name2, name3,
使得对于每一个循环组变量groupid,
如果type为A, 则组内的name1就取对应的name值;
如果type为B, 则组内的name2就取对应的name值(如果num2=1的话,name2就取缺失值);
如果type为C, 则组内的name3就取对应的name值(如果num2=2的话,name2就取缺失值);

非常感谢!

clear
set obs 20

gen type="A"
replace type="A" in 2
replace type="B" in 3
replace type="C" in 4
replace type="A" in 5
replace type="B" in 6
replace type="C" in 7
replace type="A" in 8
replace type="B" in 9
replace type="A" in 10
replace type="B" in 11
replace type="A" in 12
replace type="B" in 13
replace type="C" in 14
replace type="A" in 15
replace type="A" in 16
replace type="B" in 17
replace type="C" in 18
replace type="A" in 19
replace type="B" in 20


gen groupid=1
replace groupid=2 in 2/4
replace groupid=3 in 5/7
replace groupid=4 in 8/9
replace groupid=5 in 10/11
replace groupid=6 in 12/14
replace groupid=7 in 15
replace groupid=8 in 16/18
replace groupid=9 in 19/20

by groupid, sort: gen num1 = _n
by groupid, sort: gen num2 = _N

也就是说我希望得到的name1,name2,name3是如下形式的数据(结合上面的命令)。

gen name1="name.1"
replace name1="name.2" in 2/4
replace name1="name.5" in 5/7
replace name1="name.8" in 8/9
replace name1="name.10" in 10/11
replace name1="name.12" in 12/14
replace name1="name.15" in 15
replace name1="name.16" in 16/18
replace name1="name.19" in 19/20

gen name2="."
replace name2="name.3" in 2/4
replace name2="name.6" in 5/7
replace name2="name.9" in 8/9
replace name2="name.11" in 10/11
replace name2="name.13" in 12/14
replace name2="name.17" in 16/18
replace name2="name.20" in 19/20

gen name3="."
replace name3="name.4" in 2/4
replace name3="name.7" in 5/7
replace name3="name.14" in 12/14
replace name3="name.18" in 16/18

二维码

扫码加我 拉你入群

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

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

关键词:forvalue value name forv PVaR replace 如何

很高兴能来这个论坛

沙发
fgleric 发表于 2012-11-27 01:34:21
name变量是什么?

另外,说的太复杂了,貌似这个问题没那么难~~

藤椅
Henryzhu 在职认证  发表于 2012-11-27 09:25:46
fgleric 发表于 2012-11-27 01:34
name变量是什么?

另外,说的太复杂了,貌似这个问题没那么难~~
我想将name1, name2, name3横值过来。
很高兴能来这个论坛

板凳
蓝色 发表于 2012-11-27 10:56:14
至今不明白你到底要做什么

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

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