2016-04-28 14 views
-1

アンケート回答者からの重要なスケールで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. 

あなたがrespondent2で見ることができるように、私は同じ値を受け取ったアイテムをしたいと思います同じランクを得てランキングをスキップします。

私は観測のランク付け方法に関する多くの情報を見つけましたが、まだ変数をランク付けする方法を見つけていません。これを行う方法を知っている人はいますか?ここで

+1

はhttp://www.stata-journal.com/article.html?article=pr0046を参照してくださいしかし、あなたはおそらく '再形成long'とオフに優れています - - その後、回答者の中で直接ランク付けすることができます。 –

+0

確かに 'reshape long'を最初に使ってください。観察順位をランク付けする方法については情報を見つけることができますが、ランク付けの方法については見つけることはできません。このタイプのタスクでは、長い形式のデータセットが最適です。 – ander2ed

+0

クロス投稿http://www.statalist.org/forums/forum/general-stata-discussion/general/1338010-ranking-variables-instead-of-observationsどのフォーラムでも、クロスポストにフラグを立てるのは礼儀正しいです(実際にはそうではないと広く考えられている)。 –

答えて

1

reshapeを使用して一つの解決されています

/* 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) 
+0

ありがとう、ander2ed!それは完璧に働いて、どのように機能するのか理解しています。あなたはちょうど頭痛のより多くの時間から私を救った。あなたが 'item'を落とさないと決めたら、幅広い形に変形しなければならないと信じています:'広い範囲のアイテムを改造する、i(回答者)j(itemNum) ' – SvW

+0

ディスカッション:http://www.statalist.org/forums/forum/general-stata-discussion/general/1338010-ranking-variables-instead-of-observations –