2017-06-14 3 views
0

私は小さなグループ(ID)に分離されたかなり巨大なデータセット(3mの観測値)のコードを作成しようとしています。下の表に記載されている各観測について、下位ランクの観測の条件が満たされると、私の下にランク付けされたすべての観測値に対して変数「値」の累積合計を作成します。グループランクに基づいて値を条件付きで合計するためのステートコード

[Data[2]

私はそうする方法がある場合は、ループを使用せずにこのコードを書きたいです。 誰かが私を助けることができますか?

ありがとうございました!

更新: 以下の出力変数の式を貼り付けました。

UPDATE 2: 上記の表のCSV形式は次のとおりです。

ID,Rank,Condition,Value,Expected output,, 
1,1,30,10,0,, 
1,2,40,20,0,, 
1,3,20,30,0,, 
1,4,30,40,10,, 
1,5,40,50,20,, 
1,6,20,60,30,, 
1,7,30,70,80,, 
2,1,40,80,0,, 
2,2,20,90,0,, 
2,3,30,100,0,, 
2,4,40,110,80,, 
2,5,20,120,90,, 
2,6,30,130,100,, 
2,7,40,140,190,, 
2,8,20,150,210,, 
2,9,30,160,230,, 

Equation

+0

私はこの例に全く従うことができません。 ID 0の0、0、0、10、20、30、80の方法をどのように(たとえば)実行するかをご案内します。 –

+0

ありがとうございました。私は方程式で質問を更新しました。 – SreeVathsan

答えて

1

私が正しく理解していれば、IDと条件の組み合わせごとに、あなたがランニングを計算したいです現在の観測値を除いた、変数値のランク順の合計。それは確かにあなたの目標である場合は、以下のテストされていないコードは、私が言ったようのStataの私のコピーは、データの画像を読み取ることができないので、これは、テストされていないソリューション

sort ID Condition Rank 
// be sure there is a single observation for each combination 
isid ID Condition Rank 
// generate the running sum 
by ID Condition (Rank): generate output = sum(Value) 
// subtract out the current observation 
replace output = output - Value 
// return to the original order 
sort ID Rank 

へのパスにあなたを設定するかもしれません。テストで不完全で、自分で問題を解決できない場合は、サンプルデータを使用可能な形式で提供すると、誰かが助けられる可能性が高くなります。

編集で追加されました:isidコマンドが修正されました。

+0

ウィリアムさんありがとう!これは、条件変数を処理する必要がないときに使用したソリューションです。私は質問に方程式を入れ、サンプルデータのCSVテキストを入れました – SreeVathsan

+0

あなたが投稿したサンプルデータに上記のようにソリューションを実行すると、どのような結果が得られますか? (あなたの記事を編集して、データを書式設定して、1行に流すのではなく、コードとして提示することに注意してください。)そして、ID 1ランク7の期待される出力として50ではなく80を得る方法を説明できますか? –

+0

優れた診断:問題の中心は 'bysort ID条件(ランク)です:出力=合計(値) - 値' –

関連する問題