Stata でバイナリ データの末尾カウントを作成するにはどうすればよいですか?
-
20-12-2019 - |
質問
Stata には現在、次のようなデータ セットがあります。
次のように列 B に「末尾カウンター」を作成しようとしています。
ここで、カウンターは 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 番目の観察 counter
は var1[2] + var1[1] = 0 + 0 = 0
.
5番目の観察 counter
は var1[5] + var1[4] = 1 + 0 = 1
.
7回目の観察 counter
は var1[7] + var1[6] = 0 + 0 = 0
. 。等々。