مجله پرانتز

چطور سطرهای دارای مقادیر منفی را در R حذف کنیم؟

ممکن است در برخی الگوریتم‌ها و یا شرایط تحلیل لازم باشد سطر‌هایی که حداقل یک داده کمتر از صفر(منفی) دارد را از دیتاست خارج کنیم. این کار به روش‌های مختلفی در 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  بدانید می‌توانید به درس‌های زیر در مدرسه پردازش و تحلیل داده دقیقه مراجعه کنید.

دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors