1

我有一项调查的数据。这个问题看起来像这样:

Did you do any of the following activities during your PhD

                             Yes, paid by my school. Yes, paid by me.  No. 

Attended an internationl conference?
Bought textbooks? 

数据以这种方式自动保存在电子表格中:

id conf.1 conf.2 conf.3 text.1 text.2 text.3

1    1                              1
2           1               1
3                   1       1
4                   1                    1
5               

这意味着参与者 1 参加了由她的大学支付的会议;参加者2参加了他支付的会议,参加者3没有去。

我想在单个变量中合并 conf.1、conf.2 和 conf.3 以及 text.1、text.2 和 text.3

id new.conf new.text

1   1        2
2   2        1
3   3        1
4   3        3

where the number now respresents the categories of the survey question

Thanks for your help
4

1 回答 1

0

我不确定您的描述多个响应集(您在问题的评论中链接到的内容)是否真的是您想要的。在这个例子中,你根本不需要重塑你的数据,一个简单的DO REPEAT命令就足以让你的new.confnew.text变量。下面的例子:

data list free /id conf.1 conf.2 conf.3 text.1 text.2 text.3.
begin data
1 1 0 0 0 1 0 
2 0 1 0 1 0 0 
3 0 0 1 1 0 0 
4 0 0 1 0 0 1 
5 0 0 0 0 0 0 
end data.
dataset name conf.
*this is to replicate missing data as specified originally.
recode conf.1 to text.3 (0 = SYSMIS)(ELSE = COPY).

compute new.conf = 0.
compute new.text = 0.
do repeat conf_list = conf.1 to conf.3 /text_list = text.1 to text.3 /#i = 1 to 3.
    if conf_list = 1 new.conf = #i.
    if text_list = 1 new.text = #i.
end repeat.

然后该命令list all产生以下输出(注意我如何将变量初始化为 0 值,这不是真正需要的,但我通常如何处理事物):

  id   conf.1   conf.2   conf.3   text.1   text.2   text.3 new.conf new.text

1.00     1.00      .        .        .       1.00      .       1.00     2.00
2.00      .       1.00      .       1.00      .        .       2.00     1.00
3.00      .        .       1.00     1.00      .        .       3.00     1.00
4.00      .        .       1.00      .        .       1.00     3.00     3.00
5.00      .        .        .        .        .        .        .00      .00

阅读案例数:5 列出案例数:5

您可能确实想要重塑数据,但如果 conf 和 text 列表变量互斥,则没有理由。如果您需要对数据进行整形,请参阅VARSTOCASES从宽到长CASESTOVARS整形和从长到宽整形命令的帮助。

于 2012-09-11T13:32:22.930 回答