ممکن است در برخی الگوریتمها و یا شرایط تحلیل لازم باشد سطرهایی که حداقل یک داده کمتر از صفر(منفی) دارد را از دیتاست خارج کنیم. این کار به روشهای مختلفی در R قابل انجام است که در ادامه به دو روش آن اشاره میکنیم.
ساخت دیتافریم نمونه
برای پیاده سازی عملی روشها لازم است ابتدا یک دیتافریم نمونه درست کنیم. این مجموعه داده دارای 5 سطر و سه ستون است. سطرهای ۳ و ۴ این مجموعه داده دارای یک مقدار منفی در ستونهای متفاوت است. هدف ما خارج کردن تمام ردیف ۳ و ۴ است.
df = data.frame(x1=c(1,2,3,4,5),
x2=c(1,2,-1,3,4),
x3=c(1,2,3,-4,5))
x1 x2 x3
1 1 1
2 2 2
3 -1 3
4 3 -4
5 4 5
روش اول: استفاده ازbase R
با استفاده از ترکیب دو تابع rowSums
و subset
میتوانید به راحتی تمام سطرهایی که حداقل یک مقدار منفی دارند را از مجموعه داده خود حذف کنید.
subset(df, !rowSums(df < 0))
x1 x2 x3
1 1 1 1
2 2 2 2
5 5 4 5
روش دوم: استفاده از کتابخانه dplyr
کتابخانه dplyr
یکی از مهمترین کتابخانههای مجموعه tidyverse
است. این کتابخانه امکانات بسیار زیادی برای تبدیل دادهها در اختیار شما میگذارد. در اینجا با استفاده از دو روش اقدام به حذف سطرهایی که حداقل یک مقدار منفی دارند میکنیم.
در روش اول با استفاده از تابع filter_all
تمام ردیفهای دارای مقدار منفی راحذف میکنیم. تابع all_vars
موقعی بکار میرود که شما میخواهید عملیاتی را برای تمام متغیرها(ستونها) بصورت همزمان انجام بدهید.
library(dplyr)
df %>%
filter_all( all_vars(.> 0))
x1 x2 x3
1 1 1
2 2 2
5 4 5
روش قبلی با آن که به راحتی عملیات مورد نظر را انجام می دهد، اما این توابع با تابع جدیدتری به نام across
جایگزین شدهاند. این روش کد کمی مدرنتر و بروز تر از روش قبلی است.
df %>%
filter(across(everything(), ~ .> 0))
x1 x2 x3
1 1 1 1
2 2 2 2
3 5 4 5
اگر میخواهید بیشتر در مورد کارکردن با دادهها در R بدانید میتوانید به درسهای زیر در مدرسه پردازش و تحلیل داده دقیقه مراجعه کنید.