楼主: mingni
8215 13

[编程问题求助] stata针对某个变量的不同选项赋值。请各大佬帮忙! [推广有奖]

  • 0关注
  • 0粉丝

VIP1

本科生

16%

还不是VIP/贵宾

-

威望
0
论坛币
484 个
通用积分
1.0006
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
524 点
帖子
23
精华
0
在线时间
126 小时
注册时间
2017-6-1
最后登录
2021-5-14

楼主
mingni 学生认证  发表于 2021-1-14 20:41:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
像下文提供的数据一样,db010-db015分别可以取1-4四个取值,现在想根据不同的取值重新给变量赋值,比如如果db010=1,则重新赋值db010=0,如果db010=2,则重新赋值db010=1,如果db010=3,则重新赋值db010=2,如果db010=3,则重新赋值db010=3。本来想用类似replace db010=0 if db010=1来一个个替换,但是发现很繁琐。所以希望论坛的各位大佬帮帮忙,看看怎样编程会比较快。谢谢大家了!
input byte(db010 db011 db012 db013 db014 db015)
. . . . . .
. . . . . .
1 1 1 1 1 1
. . . . . .
. . . . . .
. . . . . .
. . . . . .
1 1 1 1 1 1
. . . . . .
2 4 2 3 2 2
1 1 1 1 1 1
1 1 1 1 2 1
1 1 1 1 1 1
. . . . . .
. . . . . .
. . . . . .
1 1 1 1 1 1
. . . . . .
1 1 1 1 2 1
. . . . . .
. . . . . .
. . . . . .
1 1 1 1 1 1
1 1 1 1 1 1
. . . . . .
. . . . . .
. . . . . .
1 1 1 1 1 1
1 1 1 1 1 1
. . . . . .
1 1 1 1 1 1
. . . . . .
. . . . . .
. . . . . .
1 1 1 1 1 1
1 1 1 1 1 1
1 3 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
. . . . . .
. . . . . .
. . . . . .
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
. . . . . .
1 2 1 1 2 1
1 1 1 1 2 1
. . . . . .
. . . . . .
2 2 1 1 2 1
1 2 1 2 2 1
. . . . . .
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
. . . . . .
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 2 1
1 1 1 1 1 1
2 3 3 2 2 2
. . . . . .
. . . . . .
. . . . . .
. . . . . .
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
. . . . . .
. . . . . .
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
. . . . . .
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
. . . . . .
1 1 1 1 1 1
1 1 1 1 1 1
. . . . . .
. . . . . .
. . . . . .
. . . . . .
1 1 1 1 1 1
1 1 1 1 2 1
. . . . . .
1 2 1 1 1 1
2 2 1 2 2 1
1 1 1 1 1 1
. . . . . .
1 1 1 1 1 1
2 2 2 1 2 1
2 2 1 2 2 1


二维码

扫码加我 拉你入群

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

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

关键词:Stata tata replace Input place

已有 1 人评分经验 收起 理由
xujingtang + 40 精彩帖子

总评分: 经验 + 40   查看全部评分

沙发
我是工作狂2009 发表于 2021-1-14 21:10:40
不知道繁琐在哪?多打几行代码不比在论坛等回复快?运行也多不了几秒

藤椅
我是工作狂2009 发表于 2021-1-14 21:13:56
replace db010=0 if db010==1
replace db010=1 if db010==2
replace db010=2 if db010==3
replace db010=3 if db010==4

replace db011=0 if db011==1
replace db011=1 if db011==2
replace db011=2 if db011==3
replace db011=3 if db011==4

replace db012=0 if db012==1
replace db012=1 if db012==2
replace db012=2 if db012==3
replace db012=3 if db012==4

replace db013=0 if db013==1
replace db013=1 if db013==2
replace db013=2 if db013==3
replace db013=3 if db013==4

replace db014=0 if db014==1
replace db014=1 if db014==2
replace db014=2 if db014==3
replace db014=3 if db014==4

replace db015=0 if db015==1
replace db015=1 if db015==2
replace db015=2 if db015==3
replace db015=3 if db015==4
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 50 + 2 + 2 + 2 精彩帖子

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

板凳
zdlspace 学生认证  发表于 2021-1-15 01:28:02
你要的是不是这个:
  1. recode db010 (0=1) (1=2) (2=3)
复制代码

另外你说的:“如果db010=3,则重新赋值db010=2,如果db010=3,则重新赋值db010=3”是个什么意思,3变为2,3变为3,下次提问,请把问题搞清楚。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 50 + 2 + 2 + 2 精彩帖子

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

报纸
黃河泉 在职认证  发表于 2021-1-15 08:45:30
你若要问程序,请用 (ssc install) dataex 附上相关`代表性’资料 (请尽量不要用截图或其他格式)。请参考说明 https://bbs.pinggu.org/thread-5048204-1-1.htmlhttps://zhuanlan.zhihu.com/p/29911577

地板
mingni 学生认证  发表于 2021-1-15 14:16:25
zdlspace 发表于 2021-1-15 01:28
你要的是不是这个:

另外你说的:“如果db010=3,则重新赋值db010=2,如果db010=3,则重新赋值db010=3”是 ...
不好意思,是口误了。其实重新赋值是想把原来的选择项变为相应的得分。实际上是这样的,db010=1,2,3,4代表了不同的情况,具体地,1代表没有困难,2代表有困难但仍可以完成,3代表有困难,需要帮助,4代表无法完成。现在要根据不同的情况进行打分,如果是1,则0分,2则为1分,3则为2分,4则为3分。
主要是现在有大概12个不同的变量,但是涉及到的选项都是一模一样的,所以是不是可以写循环语句,一次性做出来结果呢?
谢谢您的回答!

7
mingni 学生认证  发表于 2021-1-15 14:17:53
我是工作狂2009 发表于 2021-1-14 21:13
replace db010=0 if db010==1
replace db010=1 if db010==2
replace db010=2 if db010==3
谢谢你的回答!主要是涉及到12个变量,所以想是不是有循环语句那样会更快一点呢?

8
zdlspace 学生认证  发表于 2021-1-15 14:47:33
  1. recode db010-db015 (1=0) (2=1) (3=2) (4=3)
复制代码


这样不是挺简单的嘛,干嘛要用循环呢

9
zdlspace 学生认证  发表于 2021-1-15 14:49:45
我是工作狂2009 发表于 2021-1-14 21:13
replace db010=0 if db010==1
replace db010=1 if db010==2
replace db010=2 if db010==3
  1. recode db010-db015 (1=0) (2=1) (3=2) (4=3)
复制代码
Stata命令还是要讲究简洁,一条命令能解决的事,尽量不要用20条

10
zdlspace 学生认证  发表于 2021-1-15 14:53:37
如果有100个这样的变量,那就是
  1. recode x1-x100  (1=0) (2=1) (3=2) (4=3)
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
mingni + 1 + 1 + 1 精彩帖子

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

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

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