كيف يمكنني إنشاء عدد زائدة للبيانات الثنائية في ستاتا؟

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

  •  20-12-2019
  •  | 
  •  

سؤال

في Stata، لدي حاليًا مجموعة بيانات تبدو كما يلي:

enter image description here

أحاول إنشاء "عداد زائدة" في العمود B بحيث يبدو كما يلي:

enter image description here

هنا، يبدأ العداد عند 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.وما إلى ذلك وهلم جرا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top