كيف يمكنني إنشاء عدد زائدة للبيانات الثنائية في ستاتا؟
-
20-12-2019 - |
سؤال
في Stata، لدي حاليًا مجموعة بيانات تبدو كما يلي:
أحاول إنشاء "عداد زائدة" في العمود B بحيث يبدو كما يلي:
هنا، يبدأ العداد عند 1 وفي كل مرة يظهر فيها "1" في A، يضيف B قيمة.
يبدو أن هذا بسيط جدًا، لكنني لست متأكدًا من كيفية القيام بذلك بالضبط.إليكم ما قمت به حتى الآن:
بافتراض أن العمود A يسمى "A" في Stata،
أنا أستعمل:
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 + . = .
.
الملاحظة الثانية ل counter
يكون var1[2] + var1[1] = 0 + 0 = 0
.
الملاحظة الخامسة ل counter
يكون var1[5] + var1[4] = 1 + 0 = 1
.
الملاحظة السابعة ل counter
يكون var1[7] + var1[6] = 0 + 0 = 0
.وما إلى ذلك وهلم جرا.