فاکتورها در زبان برنامه نویسی R (با مثال و نکات)

فاکتورها؛ نوعی شیء داده در زبان برنامه نویسی R هستند که برای طبقه بندی داده ها و ذخیره آنها به صورت سطح، استفاده می شوند. این فاکتورها می توانند هم رشته و هم اعداد صحیح را ذخیره نمایند. آنها برای ستون هایی مفید هستند که تعداد محدودی از مقادیر خاص دارند. مانند “Male” (مذکر)، “Female” (مؤنث)، True ، False و غیره. آنها در تجزیه و تحلیل داده ها برای مدلسازی آماری مفید هستند.
به زبان ساده تر فاکتورها (Factors) در زبان R ساختارهای دادهای هستند که منحصراً برای ذخیره و مدیریت دادههای دستهای (Categorical) طراحی شدهاند؛ یعنی متغیرهایی که مقادیر محدود، تکراری و مشخصی دارند.
چرا باید از فاکتورها استفاده کنیم؟
-
بهینهسازی حافظه: R به جای ذخیره تکراری متنهای طولانی، در پسزمینه به هر دسته یک عدد (Integer) اختصاص میدهد که حجم بسیار کمتری اشغال میکند.
-
مدلسازی آماری: توابع آماری، رسم نمودارها و الگوریتمهای یادگیری ماشین در R، فاکتورها را بسیار بهتر از متنهای ساده (Character) درک و پردازش میکنند.
نحوه ساخت فاکتور
برای تبدیل یک بردار (Vector) به فاکتور، از تابع ()factor استفاده میشود. فرض کنید در پایگاه داده یک سیستم بانکی، لیستی از سطح حساب مشتریان را داریم:
# یک بردار متنی شامل نوع حساب کاربرانaccount_types <- c("عادی", "ویژه", "عادی", "طلایی", "ویژه")# تبدیل بردار متنی به فاکتورaccount_factor <- factor(account_types)# نمایش نتیجهprint(account_factor)خروجی این کد به شکل زیر خواهد بود:
Levels: طلایی عادی ویژه
در خروجی بالا، کلمه Levels نشاندهنده دستهبندیهای یکتایی است که R در دادههای شما شناسایی کرده است. همانطور که میبینید، R به طور پیشفرض این سطوح را بر اساس ترتیب حروف الفبا مرتب میکند، نه بر اساس ترتیبی که در لیست وارد شدهاند.
مثال ها و توضیحات بیشتر
مثال
# Create a vector as input.
data <- c(“East”,”West”,”East”,”North”,”North”,”East”,”West”,”West”,”West”,”East”,”North”)
print(data)
print(is.factor(data))
# Apply the factor function.
factor_data <- factor(data)
print(factor_data)
print(is.factor(factor_data))
زمانی که کد بالا را اجرا کنیم؛ نتیجه زیر به دست می آید:
[۱] “East” “West” “East” “North” “North” “East” “West” “West” “West” “East” “North”
[۱] FALSE
[۱] East West East North North East West West West East North
Levels: East North West
[۱] TRUE
فاکتورها در چارچوب داده ها
در ایجاد هر نوع چارچوب داده با یک ستون از داده های متنی، R با ستون متنی به عنوان یک داده مطلق رفتار می کند و فاکتورها را روی آن ایجاد می کند:
# Create the vectors for data frame.
height <- c(132,151,162,139,166,147,122)
weight <- c(48,49,66,53,67,52,40)
gender <- c(“male”,”male”,”female”,”female”,”male”,”female”,”male”)
# Create the data frame.
input_data <- data.frame(height,weight,gender)
print(input_data)
# Test if the gender column is a factor.
print(is.factor(input_data$gender))
# Print the gender column so see the levels.
print(input_data$gender)
زمانی که کد بالا را اجرا می کنیم؛ نتایج زیر به دست می آید:
height weight gender
۱ ۱۳۲ ۴۸ male
۲ ۱۵۱ ۴۹ male
۳ ۱۶۲ ۶۶ female
۴ ۱۳۹ ۵۳ female
۵ ۱۶۶ ۶۷ male
۶ ۱۴۷ ۵۲ female
۷ ۱۲۲ ۴۰ male
[۱] TRUE
[۱] male male female female male female male
Levels: female male
تغییر مرتبه ی سطح ها
مرتبه سطح ها در یک فاکتور را می توان با اعمال دوباره ی تابع فاکتور با مرتبه ی جدیدی از سطوح؛ تغییر داد.
data <- c(“East”,”West”,”East”,”North”,”North”,”East”,”West”,
“West”,”West”,”East”,”North”)
# Create the factors
factor_data <- factor(data)
print(factor_data)
# Apply the factor function with required order of the level.
new_order_data <- factor(factor_data,levels = c(“East”,”West”,”North”))
print(new_order_data)
data <- c(“East”,”West”,”East”,”North”,”North”,”East”,”West”,
“West”,”West”,”East”,”North”)
# Create the factors
factor_data <- factor(data)
print(factor_data)
# Apply the factor function with required order of the level.
new_order_data <- factor(factor_data,levels = c(“East”,”West”,”North”))
print(new_order_data)
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر به دست می آید:
[۱] East West East North North East West West West East North
Levels: East North West
[۱] East West East North North East West West West East North
Levels: East West North
تولید سطح ها در یک فاکتور
ما می توانیم سطوح فاکتور را با استفاده از تابع ()gl ایجاد کنیم. این تابع دو عدد صحیح را به عنوان ورودی اتخاذ می کند که نشان دهنده تعداد سطح ها و تعداد تکرار هر سطح می باشد.
سینتکس
gl(n, k, labels)
پارامترهایی که در کد بالا به کار رفته اند عبارتند از:
- n یک عدد صحیح است که تعداد سطوح را نشان می دهد.
- k یک عدد صحیح است که تعداد تکرار ها را نشان می دهد.
- lables برداری از لیبل ها برای سطوح فاکتور حاصل می باشد.
مثال
v <- gl(3, 4, labels = c(“Tampa”, “Seattle”,”Boston”))
print(v)
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر را به دست می آوریم:
Tampa Tampa Tampa Tampa Seattle Seattle Seattle Seattle Boston
[۱۰] Boston Boston Boston
Levels: Tampa Seattle Boston
