楼主: planty
8605 7

stata可以将多选进行拆分吗? [推广有奖]

  • 0关注
  • 0粉丝

小学生

78%

还不是VIP/贵宾

-

威望
0
论坛币
11 个
通用积分
4.0652
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
381 点
帖子
11
精华
0
在线时间
8 小时
注册时间
2007-5-26
最后登录
2025-7-17

楼主
planty 发表于 2008-7-17 13:56:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

新学stata,可能很弱地问一下……如果录入时将多选题的选项连在一起录入了,数据整理时能否用stata将这些多选项拆分?

第一次发帖,希望大家多指点:)

二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 第一次发帖 数据整理 在一起 Stata 拆分

回帖推荐

eblog 发表于12楼  查看完整内容

以下是引用planty在2008-7-22 9:25:00的发言:谢谢大家!我现在做出来了:)跟大家分享一下我的做法,也请多提意见~.......嗯,最终的结论是stata很牛很好用~~能编程真是个大优势:)程序编得不错,但你这种拆分说实话没多大意义,最终还是要把选项虚拟化才能进行下一步的分析工作 下面的程序可以解决这个问题: tostring x,gen(y) //假设x为直接输入的多项选择forvalues i=1/6  { //假设多项选择题可选项最多有6项generate y ...

planty 发表于11楼  查看完整内容

谢谢大家!我现在做出来了:)跟大家分享一下我的做法,也请多提意见~目的:把某个变量(假设它叫B3吧)拆成4个步骤:1、先将其转换为string:tostring B3, generate(B3str)2、将B3str拆分成四个:(感谢voodoo的链接告诉了我forvalue这个东西~)forvalues i=1/4  {generate str1 B3_`i'=substr(B3str, `i', 1)}然后就搞掂啦~如果需要的话,可以用destring命令把新生成的string变量变成byte变量。(命令是destring B3_1, gene ...

本帖被以下文库推荐

沙发
eblog 发表于 2008-7-17 21:20:00

有很多种方法的,看你想怎么处理选择项了

藤椅
蓝色 发表于 2008-7-18 08:47:00
以下是引用planty在2008-7-17 13:56:00的发言:

新学stata,可能很弱地问一下……如果录入时将多选题的选项连在一起录入了,数据整理时能否用stata将这些多选项拆分?

第一次发帖,希望大家多指点:)

像你这样的问题最好能具体点

举一个例子来让大家知道你到底像做什么

因为不同的情况,处理的方法也是不同的。

板凳
voodoo 发表于 2008-7-20 17:50:00
用substr()命令将多选项分离,进一步的处理参见Stata FAQ: How do I deal with multiple responses? http://www.stata.com/support/faqs/data/multresp.html
已有 1 人评分论坛币 热心指数 收起 理由
crystal8832 + 10 + 1 热心帮助其他会员

总评分: 论坛币 + 10  热心指数 + 1   查看全部评分

巫毒上传,必属佳品!
坛友下载,三思后行!

报纸
planty 发表于 2008-7-22 09:01:00
以下是引用蓝色在2008-7-18 8:47:00的发言:

像你这样的问题最好能具体点

举一个例子来让大家知道你到底像做什么

因为不同的情况,处理的方法也是不同的。

嗯谢谢提醒,不好意思……

有一个变量是对被调查者对问卷中四个选项(用数字编号)进行的排序,observations形如“3”、“1243”、“231”这样,要把这一个变量按排序拆成四个(即首选项、次选项、排序第三选项和排序第四的选项)。

地板
planty 发表于 2008-7-22 09:25:00

谢谢大家!我现在做出来了:)跟大家分享一下我的做法,也请多提意见~

目的:把某个变量(假设它叫B3吧)拆成4个

步骤:

1、先将其转换为string:tostring B3, generate(B3str)

2、将B3str拆分成四个:(感谢voodoo的链接告诉了我forvalue这个东西~)

forvalues i=1/4  {

generate str1 B3_`i'=substr(B3str, `i', 1)

}

然后就搞掂啦~如果需要的话,可以用destring命令把新生成的string变量变成byte变量。(命令是destring B3_1, generate(新变量名)或replace)。

嗯,最终的结论是stata很牛很好用~~能编程真是个大优势:)

7
eblog 发表于 2008-7-22 10:18:00
以下是引用planty在2008-7-22 9:25:00的发言:

谢谢大家!我现在做出来了:)跟大家分享一下我的做法,也请多提意见~

.......

嗯,最终的结论是stata很牛很好用~~能编程真是个大优势:)


程序编得不错,但你这种拆分说实话没多大意义,最终还是要把选项虚拟化才能进行下一步的分析工作
下面的程序可以解决这个问题:

tostring x,gen(y) //假设x为直接输入的多项选择
forvalues i=1/6  { //假设多项选择题可选项最多有6项
generate y_`i'=strpos(y,string(`i'))
replace y_`i'=1 if y_`i'~=0 //虚拟化
}

[此贴子已经被作者于2008-7-22 17:14:55编辑过]

8
AC0C0 学生认证  发表于 2017-5-10 15:17:01
planty 发表于 2008-7-22 09:25
谢谢大家!我现在做出来了:)跟大家分享一下我的做法,也请多提意见~目的:把某个变量(假设它叫B3吧)拆成 ...
帮助很大,谢谢啦~

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

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