Stata 排名变量(非观察值)

Stata 排名变量(非观察值),stata,Stata,我的调查问卷数据来自被调查者,要求他们根据重要性对20个项目进行排名。量表的下端有一个“垃圾箱”,在这个垃圾箱里,受访者可以扔掉他们认为对他们来说完全不重要的20个物品中的任何一个。结果是一个包含20个变量的数据集(每个项目1个)。每个变量都会收到一个介于1和100之间的数字(如果项目被扔进垃圾箱,则为0) 我想把这些条目重新编码到每个受访者的变量排名中。因此,所有变量都会得到一个介于1到20之间的数字,相对于受访者的排名 例如: 当前: item1 item2 i

我的调查问卷数据来自被调查者,要求他们根据重要性对20个项目进行排名。量表的下端有一个“垃圾箱”,在这个垃圾箱里,受访者可以扔掉他们认为对他们来说完全不重要的20个物品中的任何一个。结果是一个包含20个变量的数据集(每个项目1个)。每个变量都会收到一个介于1和100之间的数字(如果项目被扔进垃圾箱,则为0)

我想把这些条目重新编码到每个受访者的变量排名中。因此,所有变量都会得到一个介于1到20之间的数字,相对于受访者的排名

例如:

当前:

               item1 item2 item3 item4 item5 item6 item7 item8 etc.
respondent1    67    44    29    7     0     99    35    22
respondent2    0     42    69    50    12    0     67    100
etc.
               item1 item2 item3 item4 item5 item6 item7 item8 etc.
respondent1    7     6     4     2     1     8     5     3
respondent2    1     4     7     5     3     1     6     8
etc.
我想要什么:

               item1 item2 item3 item4 item5 item6 item7 item8 etc.
respondent1    67    44    29    7     0     99    35    22
respondent2    0     42    69    50    12    0     67    100
etc.
               item1 item2 item3 item4 item5 item6 item7 item8 etc.
respondent1    7     6     4     2     1     8     5     3
respondent2    1     4     7     5     3     1     6     8
etc.
正如您在respondent2中看到的,我希望收到相同值的项目获得相同的排名,然后排名跳过一个数字


我已经找到了很多关于如何对观测值进行排序的信息,但我还没有找到如何对变量进行排序的方法。有人知道如何做吗?

这里有一个使用
重塑的解决方案:

/* Create sample data */

clear *
set obs 2
gen respondant = "respondant1"
replace respondant = "respondant2" in 2
set seed 123456789
forvalues i = 1/10 {
    gen item`i' = ceil(runiform()*100)
}
replace item2 = item1 if respondant == "respondant2"
list


     +----------------------------------------------------------------------------------------------+
     |  respondant   item1   item2   item3   item4   item5   item6   item7   item8   item9   item10 |
     |----------------------------------------------------------------------------------------------|
  1. | respondant1      14      56      69      62      56      26      43      53      22       27 |
  2. | respondant2      65      65      11       7      88       5      90      85      57       95 |
     +----------------------------------------------------------------------------------------------+


/* reshape long first */
reshape long item, i(respondant) j(itemNum)

/* Rank observations, accounting for ties */
by respondant (item), sort : gen rank = _n
replace rank = rank[_n-1] if item[_n] == item[_n-1] & _n > 1

/* reshape back to wide format */
drop item // optional, you can keep and just include in reshape wide
reshape wide rank, i(respondant) j(itemNum)

请参阅,但您可能会使用
重塑长型
——之后您可以直接在受访者中排名。当然,首先使用
重塑长型
。您可以找到有关如何对观察结果进行排序的信息,但无法找到如何对变量进行排序的信息,这是有原因的。对于这种类型的任务,长格式的数据集是你最好的选择。在任何论坛上交叉发布,有礼貌地标记交叉发布(事实上,人们普遍认为不这样做是不正常的)。谢谢你!它工作得很好,我理解它是如何工作的。你让我少了几个小时的头痛。只是我遇到的一个问题的一点补充:我相信如果你决定不删除
项目
,你必须将其纳入重塑宽等级项目中:
重塑宽等级项目,I(响应者)j(itemNum)