اغلب، هنگامی که با یک مجموعه داده بزرگ کار می کنید، فقط به بخش کوچکی از آن برای تجزیه و تحلیل خاص خود علاقه مند خواهید بود. مثلا اگر با دادههای پزشکی سر و کار دارید مایلید تنها دادههای مربوط به بیمارانی که مراحل درمانی خاصی را گذراندهاند از دادههای اصلی جدا کنید و روی آن ها کار کنید.
چگونه میتوانید همه متغیرها و مشاهدات اضافی را مرتب کنید و فقط آنهایی را که نیاز دارید استخراج کنید؟ R راه های مختلفی برای انجام این کار دارد. فرآیندی که آن را «زیرمجموعهسازی» مینامد.
برای اینکه بتوانیم بهتر روشهای زیرمجموعهسازی را درک کنیم بهتر است آنها را در یک مثال واقعی دنبال کنیم. با استفاده از دستور زیر مجموعه دادههای مربوط به کشتی تایتانیک را وارد R میکنیم و با پنج روش مختلف زیرمجموعههایی از داده اصلی را میسازیم.
titanic = read_csv("https://d-learn.ir/wp-content/uploads/2022/04/titanic.csv")[,-1]
head(titanic)
# A tibble: 6 x 12
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
1 1 0 3 Braund, Mr. Owen Harris male 22 1 0 A/5 21171 7.25 NA S
2 2 1 1 Cumings, Mrs. John Bradley (Flore~ fema~ 38 1 0 PC 17599 71.3 C85 C
3 3 1 3 Heikkinen, Miss. Laina fema~ 26 0 0 STON/O2. 31~ 7.92 NA S
4 4 1 1 Futrelle, Mrs. Jacques Heath (Lil~ fema~ 35 1 0 113803 53.1 C123 S
5 5 0 3 Allen, Mr. William Henry male 35 0 0 373450 8.05 NA S
6 6 0 3 Moran, Mr. James male NA 0 0 330877 8.46 NA Q
روش اول: انتخاب ستونها با استفاده از دستورات پایه
فرض کنید میخواهیم دیتافریمی داشته باشیم که تنها شناسه، وضعیت زنده ماندن و جنسیت مسافران را در خود نگه دارد. این دادهها در ستونهای 1، 2 و 5 قرار دارند. کافی است دستور زیر را اجرا کنید و نتیجه را ببینید.
titanic[,c(1,2,5)]
روش دوم: حذف ستونها
میتوانید برای رسیدن به نتیجه مشابه در مثال مرحله قبل بجای آنکه ستونهای مورد نظر خود را انتخاب کنید، ستونهایی که مد نظر شما نیستند را حذف کنید.
titanic[,-c(3:4,6:12)]
روش سوم: استفاده از تابع which
میخواهیم برای مثال بالا در مجموعه دادههای تایتانیک تنها مسافران زن را مورد بررسی قرار دهیم. برای این کار لازم است مجموعه دادهای داشته باشیم که تنها مسافران زن را در بر بگیرد. امکانات تابع which به شما اجازه این کار را میدهد. همچنین با استفاده از عملگر %in% میتوانید نام ستونها را انتخاب کنید.
titanic[which(titanic$Sex == "female"), names(titanic) %in% c("PassengerId","Survived","Sex")]
روش چهارم: استفاده از تابع subset
برای مثال بالا میتوانیم از تابع subset نیز استفاده کنیم که نتیجهای مشابه خواهد داشت.
subset(titanic, Sex == "female" , select = c("PassengerId","Survived","Sex"))
روش پنجم: استفاده از کتابخانه dplyr
اگر با مجموعه کتابخانههای tidyverse آشنا باشید، میتوانید از دستور select و filter نیز استفاده کنید. این روش نیز به راحتی روشهای دیگر است:
select(filter(titanic, Sex == "female"),c(PassengerId,Survived,Sex))
یک پاسخ
خیلی کاربردی و توضیحات نیز بسیار گویا