یکی از متداولترین و اولین کارها در پاکسازی دادهها، مدیریت دادههای گم شده است. دادههای گم شده یا همان missing value معمولا به دلایل مختلفی به وجود میآیند. اشتباه کاربر در ورود داده، موجود نبودن مقادیر در زمان ثبت دادهها و مسائلی از این دست دلایل بوجود آمدن دادههای گم شده است.
دادههای گم شده با اهمیت هستند. متخصصین معمولا قبل از شروع به تحلیل برای نحوه برخورد با این نوع دادهها برنامهریزی میکنند. در برخی موارد تحلیلگران تصمیم میگیرند این دادهها را از مجموعه دادههای خود بیرون بگذارند، جایگزین کنند و یا آنها را بطور مستقل بررسی کنند. در ادامه چند راه ساده برای تشخیص و جایگزینی این نوع دادهها آورده میشود.
چطور بفهمیم داده گم شده داریم؟
سادهترین راه در R برای تشخیص دادههای گم شده استفاده از تابع()is.na
است. برای نمونه ابتدا برداری که دارای دادههای گم شده است را میسازیم و در ادامه با استفاده از این تابع مقادیر گمشده را مشخص میکنیم.
v <- c(1, 2, 3, NA , 4, NA, 6)
is.na(v)
[1] FALSE FALSE FALSE TRUE FALSE TRUE FALSE
مقادیر TRUE
در مثال بالا محل قرارگیری داده گم شده را در بردار مورد نظر نمایش میدهند.حال اگر بخواهیم تعداد مقادیر گمشده را بدانیم کافی است بصورت زیر عمل کنیم:
sum(is.na(v))
[1] 2
تا اینجا باید متوجه شده باشید که اگر بخواهیم درصد دادههای پرت به کل دادهها را بدانیم میتوانیم بصورت زیر عمل کنیم.
mean(is.na(v))
[1] 0.2857143
برای پیدا کردن اندیس مربوط به دادههای گمشده میتوانید از تابع which
استفاده کنید. در مثال ما اندیسهای ۴ و ۶ محل قرارگیری دادههای گم شده هستند.
which(is.na(v))
[1] 4 6
چطور دادههای گم شده را حذف کنیم؟
برای حذف دادههای گمشده در R روشهای مختلفی وجود دارد. سادهترین روش استفاده از تابع ()na.omit
است.
na.omit(v)
[1] 1 2 3 4 6
چگونه داده گم شده را جایگزین کنیم؟
میخواهیم دادههای گم شده در بردار را با میانگین اعداد جایگزین کنیم. دستور زیر میانگین مقادیر موجود در بردار v را جایگزین مقادیر گمشده میکند. شما اگر استراتژی متفاوتی دارید می توانید میانه، بیشینه یا کمینه را با تابع میانگین عوض کنید. حتی میتوانید تابعی مخصوص به خود بنویسید.
v[is.na(v)] <- mean(v, na.rm = TRUE)
[1] 1.0 2.0 3.0 3.2 4.0 3.2 6.0
مدیریت دادههای گمشده در دیتا فریم
هنگام کار با R در بیشتر مواقع با یک دیتافریم مواجه هستیم. اگر در دیتافریم داده گمشده دارید میتوانید به راحتی سطرهای کامل را از دیگر سطرها جدا کنید.
data = data.frame(x1 = c(7, 2, 1, NA, 9), # Some example data
x2 = c(1, 3, 1, 9, NA),
x3 = c(NA, 8, 8, NA, 5))
> data
x1 x2 x3
1 7 1 NA
2 2 3 8
3 1 1 8
4 NA 9 NA
5 9 NA 5
دستور زیر تنها سطرهایی که دادههای کامل دارند را جدا میکند.شما می توانید نتیجه این دستور را در متغیر جدیدی ذخیره کنید و در تحلیل خود استفاده کنید.
data[complete.cases(data), ]
x1 x2 x3
2 3 8
1 1 8
اگر میخواهید بیشتر در مورد کارکردن با دادهها در R بدانید میتوانید به درسهای زیر در مدرسه پردازش و تحلیل داده دقیقه مراجعه کنید.
منبع عکس: Pierre Bamin on Unsplash