Stata でバイナリ データの末尾カウントを作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com//questions/25006193

  •  20-12-2019
  •  | 
  •  

質問

Stata には現在、次のようなデータ セットがあります。

enter image description here

次のように列 B に「末尾カウンター」を作成しようとしています。

enter image description here

ここで、カウンターは 1 から始まり、A に「1」が現れるたびに、B の値が加算されます。

これは非常に簡単そうに見えますが、これを正確に行う方法がわかりません。これまでに私がやったことは次のとおりです。

列 A が Stata では「A」と呼ばれると仮定すると、

私が使う:

gen B = A + A[_n - 1]

しかし、これは私に何か違和感を与えます。どのように進めればよいかわかりません。誰かヒントをいただけますか?

役に立ちましたか?

解決

一つの方法は次のとおりです。

clear all
set more off

*----- example data -----

input ///
var1
0
0
0
0
1
0
0
1
0
0
0
end

list, sep(0)

*----- what you want -----

gen counter = sum(var1) + 1

list, sep(0)

sum() 関数を使用すると累積合計が得られます。見る help sum(). 。これは非常に基本的な Stata 関数です。あ search sum すぐにそこに着いたでしょう。

観測ごとに「現在の」値を合計しているだけであるため、アプローチは失敗します。 A それ自体の前の値を使用します。それ 聞こえるかもしれない 累積和のようなものですが、よく考えてみるとそうではないことがわかります。

あなたのコードと私のデータを使用すると、結果は次のようになります。

     +----------------+
     | var1   counter |
     |----------------|
  1. |    0         . |
  2. |    0         0 |
  3. |    0         0 |
  4. |    0         0 |
  5. |    1         1 |
  6. |    0         1 |
  7. |    0         0 |
  8. |    1         1 |
  9. |    0         1 |
 10. |    0         0 |
 11. |    0         0 |
     +----------------+

最初の観察は、 counter 不足している (.)。それは、最初の観測値には以前の値がないためです。 var1, 、つまり、Stata は次のようなことを行います var1[1] + var1[0] = 0 + . = ..

2 番目の観察 countervar1[2] + var1[1] = 0 + 0 = 0.

5番目の観察 countervar1[5] + var1[4] = 1 + 0 = 1.

7回目の観察 countervar1[7] + var1[6] = 0 + 0 = 0. 。等々。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top