دستور IF در spss– یک آموزش سریع

نویسنده : Ruben Geert van den Berg  براساس Basics

در SPSS ، IF یک متغیر جدید یا موجود را محاسبه می کند

برای انتخاب موارد. در تجزیه و تحلیل انتخاب موارد ، از FILTER یا SELECT IF به جای آن استفاده کنید.

• مثال 1 – موارد پرچم گذاری بر اساس عملکرد تاریخ

• مثال 2 – دامنه مقادیر را با تابع جایگزین کنید

• مثال 3 – محاسبه متغیر متمایز بر اساس جنسیت

●       If در مقابل do if   در spss

●       Ifدر مقابلrecode  در spss

فایل داده ای که برای مثال استفاده می شود

همه مثال ها ی bank.sav ،از یک بررسی کوتاه از کارمندان بانک ، استفاده می کند. بخشی از داده ها در زیر نشان داده شده است.

برای استفاده بیشترازاین آموزش ، توصیه می کنیم فایل را بارگیری کنید و مثالها را، خودتان امتحان کنید.

مثال 1 – موارد پرچم گذاری بر اساس عملکرد تاریخ

بیایید همه پاسخ دهندگان متولد دهه 80 را پرچم گذاری کنیم. دستور زیر،اولین متغیر پرچم گذاری شده را -متولد 80s – به عنوان ستونی از

صفرها محاسبه می کند اگر سال_سال استخراج شده از تاریخ تولد _در محدوده 1980 تا 1989 باشد، آن را روی یک تنظیم می کنیم.

* ایجاد متغیری جدید که فقط صفر در آن نگهداری می شود.

compute born80s = 0.
* اگر پاسخ دهنده بین سال 1980 و 1989 متولد شده باشد ، مقدار آن را 1 قرار دهید.

if(range(xdate.year(dob),1980,1989)) born80s = 1.
execute.

* به صورت اختیاری: برچسب های مقادیر را اضافه کنید.

add value labels born80s 0 ‘Not born during 80s’ 1 ‘Born during 80s’.

نتیجه

مثال 2 – دامنه مقادیر را با تابع جایگزین کنید

در مرحله بعد ، اگر ما بتوانیم نمودار هیستوگرام را در ساعت کاری هفتگی – چند ساعت – اجرا کنیم ، مقادیر 160 ساعت به بالا را مشاهده خواهیم کرد.

هرچند،یک هفته (24*7=)168 ساعت دارد.حتی کیم جونگ اون همچین ادعایی که ، 160 ساعت در هفته کار می کند را ندارد!

 فرض می کنیم که پاسخ دهندگان، ساعت کاری ماهانه خود را – بیش از هفتگی – پر کرده اند. به طور متوسط ، ماهها را (52/12 =) 4.33

هفته، درنظربگیرید.درنتیجه ساعتهای هفتگی را بر 4.33 تقسیم می کنیم، اما فقط برای مواردی که عدد 160 یا بیشتر دارند.

 * ساعات هفتگی را، به صورت نزولی مرتب کنید.

sort cases by whours (d).

* 160 ساعت یا بیشتر را بر 4.33 (میانگین هفته در ماه) تقسیم کنید.

if(whours >= 160) whours = whours / 4.33.
execute.

نتیجه

 

توجه

 می توانستیم این اصلاح را با RECODE نیز انجام دهیم:

RECODE whours (160 = 36.95)(180 = 41.57).

با این حال توجه داشته باشید که استفاده از RECODE ،از آنجایی که باید مقادیر متمایزتری را اصلاح کنیم خسته کننده می شود.برای این متغیر منطقی است اما IF برای همه متغیرها عالی میباشد.

مثال 3 – محاسبه متغیر متمایز بر اساس جنسیت

اکنون مواردی را که به صورت تمام وقت کار می کنند را پرچم گذاری می کنیم. با این حال ،اصطلاح “تمام وقت” به معنای 40 ساعت کار برای کارمندان مردان و 36 ساعت کار برای کارمندان زن می باشد. درنتیجه باید از فرمول های مختلف،به تفکیک جنسیت استفاده کنیم. دستور IF در زیر این کار را انجام می دهد.

* محاسبه بصورت تمام وقت فقط، صفرها را درنظرگرفته است .

compute fulltime = 0.
*تایم تمام وقت را برای زنان اگر 1 = whours> = 36 ویا برای مردان اگر whours> = 40 تنظیم کنید.

if(gender = 0 & whours >= 36) fulltime = 1.
if(gender = 1 & whours >= 40) fulltime = 1.
* در صورت تمایل ، برچسب های مقادیر را اضافه کنید.

add value labels fulltime 0 ‘Not working fulltime’ 1 ‘Working fulltime’.
* بررسی سریع

means whours by gender by fulltime
/cells min max mean stddev.

نتیجه

این دستور، با یک جدول MEANS به پایان می رسد که مینیمم ها ، ماکزیمم ها ، میانگین ها و انحراف معیارها را در هر گروه و به تفکیک جنسیت نشان می دهد. این جدول – که در زیر نشان داده شده است – روش خوبی برای بررسی نتایج می باشد.

مقدارماکسیمم برای خانم هایی که تمام وقت کار نمی کنند ، عددی کمتر از36 است. مقدارمینیمم برای خانوم هایی که تمام وقت کار می کنند 36مقدار می باشد. و غیره.

IF در مقابلDO IF در SPSS

برخی از کاربران SPSS ممکن است با DO IF آشنا باشند. تفاوت اصلی بین DO IF و IF این است

• IF یک دستور تک خط است در حالی که DO IF حداقل به 3 خط نیاز دارد:DO IF، برخی تغییرات،پایان IF

• IF یک دستور COMPUTTE مشروط است در حالی که DO IF می تواند بر سایر تغییرات – مانند RECODE یا COUNT – نیز تأثیر بگذارد.

• اگر موارد بیش از 1 شرط داشته باشند ، اولین شرط هنگام استفاده از DO IF – ELSE IF ، غلبه دارد.

 اگر شما به جای آن از چندین دستور IF استفاده می کنید ، آخرین شرطی که هر مورد میگیرد، اثر می گذارد.دستورزیر این ایده را ترسیم می کند.

DO IF_ دستورELSE IF در مقابل  Multiple IF

* DO IF: پاسخ دهندگانی که هر دو شرط را دارند به عدد 1-  میگیرند.

do if(condition_1).
result_1.
else if(condition_2). /*excludes cases meeting condition_1.
result_2.
end if.
*IF: پاسخ دهندگانی که هر دو شرط را دارند  عدد 2- میگیرند.

if(condition_1) result_1.
if(condition_2) result_2. /*includes cases meeting condition_1.

SPSSدر IF در مقابل RECODE

در بسیاری از موارد ، RECODE گزینه ساده تری برای IF است. با این حال ، RECODE محدودیت های بیشتری را نیز، دارد. اول از

همه، RECODE ققط جایگزین (دامنه) ثابت ها _مانند 0،99 یا مقادیر گمشده سیستمی_با ثابت های دیگر میشود.برخی اوقات مانند

  like recodeoverall(sysmis= q1).

ممکن نیست_ q1 یک متغییر است نه یک ثابت_اما butif(sysmis(overall)) overall = q1درست عمل میکند.

شما نمی توانید یک تابع – میانگین ، جمع یا هر چیز دیگری – را به هر چیزی recode کنید و هیچ چیزی را به صورت یک تابع جدید رمزگذاری کنید. برای انجام این کار به IF نیاز خواهید داشت.

دوما ، RECODE فقط می تواند مقادیر را بر اساس یک متغیر تنظیم کند. به همین دلیل است که شما نمی توانید 2 متغیر را به یکی کنید اما می توانید از یک شرط IF استفاده کنید که شامل چندین متغیر است: if(gender = 0 & whours >= 36) fulltime = 1 کاملا امکان پذیراست.              

با این وجود می توانید با ترکیب RECODE و DO IF از این محدودیت عبور کنید. همچنین، آخرین مثال، مسیر متفاوتی را برای پرچم گذاری زنان و مردان دربحث کار تمام وقت، با استفاده از معیارهای مختلف، نشان می دهد.

مثال 4 – محاسبه متغیر متمایز به تفکیک جنسیت II

* اصلاح مجدد whours به صورت تمام وقت برای همه.

recode whours (40 thru hi = 1)(else = 0) into fulltime2.

* برای پاسخ دهندگان زن کدگذاری متفاوتی اعمال کنید.

do if(gender = 0).
recode whours (36 thru hi = 1)(else = 0) into fulltime2.
end if.

* در صورت تمایل ، برچسب های مقادیر را اضافه کنید.

add value labels fulltime2 0 ‘Not working fulltime’ 1 ‘Working fulltime’.

* بررسی سریع

means whours by gender by fulltime2
/cells min max mean stddev.

یادداشت های نهایی

این آموزش با چندین مثال، بحث مختصری را درباره دستور ،IF ارائه داده است. امیدوارم که برای شما مفید واقع شده باشد. اگر مورد اساسی را از ازقلم انداخته ام ، لطفاً برایم نظرتان را در زیر بنویسید.