زیرمجموعه کردن داده ها در نرم افزار R


1402/06/14

دسترسی سریع


زیرمجموعه کردن داده ها در نرم افزار R

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

ساختن زیرمجموعه از داده ها

در این مثال، یک مجموعه داده را شبیه سازی می کنم و نام آن را a می گذارم. برای این مجموعه داده ۲ متغیر (ستون) و ۲۰ مشاهده (سطر) به صورت تصادفی اعدادی بین ۱ تا ۲۰ تعریف می کنم و نام آنها را variable1 و variable2 می گذارم.

مشخص کردن زنجیره تصادفی قبل از شبیه سازی داده ها بسیار مهم است. با تابع set.seed زنجیره ارقام تصادفی را تعیین کنید. اگر این کار را نکنیم، هر بار که کد را اجرا کنیم داده های متفاوتی دا شبیه سازی می کنیم! اما با مشخص کردن آن شما بایستی بتوانید که داده های من را عینا شبیه سازی کنید.

set.seed(10)            #با این تابع زنجیره ارقام تصادفی را تعیین می کنم. عدد ۱۰ نام زنجیره است و معنای دیگری ندارد
a <- data.frame(variable1 = sample(1:20), variable2 = sample(1:20))          #a تعریف آبجکت
a <- a; a$variable1[c(7, 8, 19)] = NA        #تغییر سطرهای ۷،۸ و ۱۹ در متغیر اول به داده های گم شده
a <- a; a$variable2[1:4] = NA            # تغییر ارزش ۴ مشاهده اول متغیر دوم به مشاهده های گم شده
print(a)
##    variable1 variable2
## 1         11        NA
## 2          6        NA
## 3          8        NA
## 4         12        NA
## 5          2        17
## 6          4        11
## 7         NA        19
## 8         NA         4
## 9         18        10
## 10         5        13
## 11         7         6
## 12        19         1
## 13         1         2
## 14        20        16
## 15         3         3
## 16         9        15
## 17        17         5
## 18        13        20
## 19        NA         8
## 20        16         9
b <- a[, 1]
print(b)
##  [1] 11  6  8 12  2  4 NA NA 18  5  7 19  1 20  3  9 17 13 NA 16
b <- a[10:15, 2]
b            #می توان به جای تابع پرینت، تنها نام آبجکت را در کنسول تایپ کرد
## [1] 13  6  1  2 16  3

همچنین می توان با نوشتن نام متغیر در علامت نقل قول (Quotation Mark) تمام مشاهده های آن متغیر را انتخاب کرد.

b <- a[1:5, "variable2"]
b
## [1] NA NA NA NA 17
استفاده از گزاره های منطقی برای ساختن زیرمجموعه از داده ها

مجموعه داده ی a شامل مشاهده های تصادفی بین اعداد ۱ تا ۲۰ است. می توان زیرمجموعه ای از این داده ساخت که در آن متغیر اول (variable1) شامل مشاهده هایی بین ۱ تا ۵ و متغیر دوم تنها شامل مشاهده های ۱۵ تا ۲۰ باشد.

دقت کنید که در این مثال تنها مشاهده هایی انتخاب می شوند که در آنها هر دو شرط صحیح باشند.

b <- a[(a$variable1 <= 20 & a$variable2 >= 10), ]
print(b)
##      variable1 variable2
## NA          NA        NA
## NA.1        NA        NA
## NA.2        NA        NA
## NA.3        NA        NA
## 5            2        17
## 6            4        11
## NA.4        NA        NA
## 9           18        10
## 10           5        13
## 14          20        16
## 16           9        15
## 18          13        20
b <- a[a$variable1 <= 20 & a$variable2 >= 10, ]
print(b)
##      variable1 variable2
## NA          NA        NA
## NA.1        NA        NA
## NA.2        NA        NA
## NA.3        NA        NA
## 5            2        17
## 6            4        11
## NA.4        NA        NA
## 9           18        10
## 10           5        13
## 14          20        16
## 16           9        15
## 18          13        20

تنها تفاوت دو مثال بالا در این است که در مثال اول گزاره ی شرطی در پرانتز و در مثال دوم بدون پرانتز استفاده شده است. به نظر شما کدام یک از دو مثال بالا خوانا تر است؟ در کدام یک احتمال اشتباه کردن بالاتر است؟

دقت کنید که هر وقت بخواهیم از علامت بزرگتر/کوچتر یا مساوی استفاده کنیم، ابتدا علامت بزرگتر/کوچکتر را می نویسیم و سپس علامت مساوی را. همچنین توجه داشته باشید که با علامت & می توانید دو گزاره ی منطقی را به هم اضافه کنید و با علامت | یکی از دو حالت را به عنوان شرط حداقل عنوان کنید.

دقت کنید که در مثال بالا، مشاهده های گم شده هم جز مشاهده هایی بودند که توسط ۲ شرط انتخاب شده بودند. **دلیل آن این است که مشاهده های گم شده یا NA در آر اعداد بی نهایت بزرگی هستند… به همین دلیل هنگامی که بخواهیم اعداد حقیقی را انتخاب کنیم باید از فرمول متفاوتی استفاده کنیم که در ادامه به آن می پردازم.

ساختن زیر مجموعه از مجموعه داده ای که حاوی مشاهده های گم شده (missing values) است

برای ساختن زیرمجموعه ای که تنها شامل اعداد حقیقی باشد می توانیم از تابع which استفاده کنیم. فرض کنید که بخواهیم همان مثال بالا را با این تابع تکرار کنیم.

b <- a[which(a$variable1 <= 20 & a$variable2 >= 10), ]
print(b)
##    variable1 variable2
## 5          2        17
## 6          4        11
## 9         18        10
## 10         5        13
## 14        20        16
## 16         9        15
## 18        13        20

در مثال بالا استفاده از پرانتز قطعا اجباری است! فکر می کنم که اکنون پاسخ پرسشی که در بالا مطرح کردم واضح باشد! بهتر است که گذاره های منطقی را در پرانتز بگذاریم و به این روش عادت کنیم چرا که بسیار پیش می آید که یک گزاره منطقی را به تابع دیگری بدهیم…

R-Logo1

نظرات

هیچ نظری وجود ندارد.


افزودن نظر

Sitemap
Copyright © 2017 - 2023 Khavarzadeh®. All rights reserved