R এ ডেটা ম্যানিপুলেশন (Data Manipulation in R)
ডেটা ম্যানিপুলেশন হলো ডেটাকে সঠিক ফর্ম্যাটে রূপান্তর এবং প্রক্রিয়াকরণ, যাতে বিশ্লেষণের জন্য ডেটা উপযোগী হয়। R প্রোগ্রামিং ভাষায় বিভিন্ন প্যাকেজ এবং ফাংশন ব্যবহার করে ডেটা ম্যানিপুলেশন করা যায়। বিশেষত dplyr এবং tidyr প্যাকেজগুলি ডেটা ম্যানিপুলেশনের জন্য খুবই জনপ্রিয় এবং কার্যকর।
ডেটা ম্যানিপুলেশনের কিছু গুরুত্বপূর্ণ কাজ
১. ডেটা নির্বাচন (Selecting Data)
২. ফিল্টারিং (Filtering Rows)
৩. নতুন কলাম তৈরি (Creating New Columns)
৪. ডেটা সাজানো (Arranging Data)
৫. গ্রুপিং এবং সারসংক্ষেপ (Grouping and Summarizing Data)
৬. ডেটা রূপান্তর (Data Transformation)
১. ডেটা নির্বাচন (Selecting Data)
ডেটা ফ্রেমের নির্দিষ্ট কলামগুলো নির্বাচন করতে dplyr প্যাকেজের select() ফাংশন ব্যবহার করা হয়।
উদাহরণ:
# dplyr প্যাকেজ লোড
library(dplyr)
# ডেটা তৈরি
data <- data.frame(
Name = c("Alice", "Bob", "Charlie"),
Age = c(25, 30, 35),
Gender = c("Female", "Male", "Male"),
Score = c(85, 90, 88)
)
# নির্দিষ্ট কলাম নির্বাচন
selected_data <- select(data, Name, Score)
print(selected_data)এখানে Name এবং Score কলামগুলো নির্বাচন করা হয়েছে।
২. ফিল্টারিং (Filtering Rows)
ডেটা ফ্রেম থেকে নির্দিষ্ট শর্তের উপর ভিত্তি করে রো নির্বাচন করতে filter() ফাংশন ব্যবহার করা হয়।
উদাহরণ:
# নির্দিষ্ট শর্তের উপর ভিত্তি করে রো ফিল্টার
filtered_data <- filter(data, Age > 28)
print(filtered_data)এখানে Age > 28 শর্ত অনুযায়ী শুধুমাত্র সেই রো গুলো নির্বাচন করা হয়েছে যেখানে বয়স ২৮ এর বেশি।
৩. নতুন কলাম তৈরি (Creating New Columns)
mutate() ফাংশন ব্যবহার করে ডেটা ফ্রেমে নতুন কলাম যোগ করা যায়।
উদাহরণ:
# নতুন কলাম যোগ করা
data <- mutate(data, Grade = ifelse(Score > 85, "A", "B"))
print(data)এখানে Grade নামে নতুন একটি কলাম তৈরি করা হয়েছে, যেখানে Score ৮৫ এর বেশি হলে "A" এবং অন্যথায় "B" রাখা হয়েছে।
৪. ডেটা সাজানো (Arranging Data)
arrange() ফাংশন ব্যবহার করে ডেটা ফ্রেমকে নির্দিষ্ট কলামের মান অনুযায়ী সাজানো যায়।
উদাহরণ:
# বয়স অনুযায়ী ডেটা সাজানো
arranged_data <- arrange(data, Age)
print(arranged_data)
# স্কোরের ক্রমবর্ধমানভাবে সাজানো
arranged_data_desc <- arrange(data, desc(Score))
print(arranged_data_desc)এখানে Age কলামের মান অনুযায়ী ডেটা সাজানো হয়েছে। দ্বিতীয় উদাহরণে, Score কলামের মান অনুযায়ী সাজানো হয়েছে অবরোহ ক্রমে।
৫. গ্রুপিং এবং সারসংক্ষেপ (Grouping and Summarizing Data)
ডেটাকে গ্রুপিং করে সারসংক্ষেপ তথ্য তৈরি করতে group_by() এবং summarize() ফাংশন ব্যবহার করা হয়।
উদাহরণ:
# লিঙ্গ অনুযায়ী গড়ে বয়স এবং স্কোর বের করা
grouped_data <- data %>%
group_by(Gender) %>%
summarize(Average_Age = mean(Age), Average_Score = mean(Score))
print(grouped_data)এখানে Gender অনুযায়ী ডেটা গ্রুপ করা হয়েছে এবং প্রতিটি গ্রুপের গড়ে বয়স এবং স্কোর বের করা হয়েছে।
৬. ডেটা রূপান্তর (Data Transformation)
tidyr প্যাকেজের gather() এবং spread() ফাংশন ব্যবহার করে ডেটার কাঠামো পরিবর্তন করা যায়।
gather(): ডেটাকে লম্বা ফর্ম্যাটে রূপান্তর করতে ব্যবহৃত হয়।spread(): ডেটাকে চওড়া ফর্ম্যাটে রূপান্তর করতে ব্যবহৃত হয়।
উদাহরণ:
# tidyr প্যাকেজ লোড
library(tidyr)
# ডেটা তৈরি
data <- data.frame(
Name = c("Alice", "Bob", "Charlie"),
Math = c(85, 90, 95),
Science = c(80, 85, 88)
)
# লম্বা ফর্ম্যাটে রূপান্তর
long_data <- gather(data, Subject, Score, Math:Science)
print(long_data)
# চওড়া ফর্ম্যাটে রূপান্তর
wide_data <- spread(long_data, Subject, Score)
print(wide_data)এখানে gather() এবং spread() ব্যবহার করে ডেটার কাঠামো পরিবর্তন করা হয়েছে।
সারসংক্ষেপ
R এ ডেটা ম্যানিপুলেশন ডেটা প্রক্রিয়াকরণের একটি গুরুত্বপূর্ণ অংশ এবং এটি বিভিন্ন ধাপে বিভক্ত:
- ডেটা নির্বাচন: নির্দিষ্ট কলাম বা রো নির্বাচন করা।
- ফিল্টারিং: নির্দিষ্ট শর্তে ভিত্তি করে ডেটা বাছাই।
- নতুন কলাম তৈরি: নতুন ডেরাইভেটিভ কলাম তৈরি করা।
- ডেটা সাজানো: ডেটা ক্রম অনুযায়ী সাজানো।
- গ্রুপিং এবং সারসংক্ষেপ: গ্রুপিং এবং গড় বা অন্যান্য সংক্ষিপ্ত পরিসংখ্যানিক তথ্য পাওয়া।
- ডেটা রূপান্তর: ডেটার কাঠামো পরিবর্তন করা।
R এ dplyr এবং tidyr প্যাকেজগুলি এইসব কাজগুলোকে সহজ এবং কার্যকরী করে তোলে, যা ডেটা বিশ্লেষণের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Data Cleaning এবং Transformation Techniques
ডেটা এনালাইসিস এবং মডেলিংয়ের জন্য Data Cleaning এবং Data Transformation অত্যন্ত গুরুত্বপূর্ণ। R প্রোগ্রামিং ভাষায় ডেটা ক্লিনিং ও ট্রান্সফরমেশন করার জন্য অনেক কার্যকরী ফাংশন এবং প্যাকেজ রয়েছে। এই প্রক্রিয়াগুলি ডেটার মান এবং গুণমান উন্নত করে এবং আরও নির্ভুল বিশ্লেষণ করতে সাহায্য করে।
১. Data Cleaning Techniques
ডেটা ক্লিনিং হল ডেটা থেকে ত্রুটিপূর্ণ বা অপ্রাসঙ্গিক তথ্য সরানো এবং প্রয়োজনীয় ডেটা প্রক্রিয়াকরণ করার প্রক্রিয়া। এখানে কিছু সাধারণ ডেটা ক্লিনিং টেকনিক্স আলোচনা করা হলো:
১.১. Missing Values হ্যান্ডলিং
ডেটাতে Missing Values (NA) থাকতে পারে যা বিশ্লেষণের জন্য সমস্যার সৃষ্টি করে। Missing Values হ্যান্ডল করার বিভিন্ন পদ্ধতি রয়েছে।
পদ্ধতি:
Missing Values সনাক্ত করা:
is.na()ফাংশন ব্যবহার করে Missing Values সনাক্ত করা যায়।sum(is.na(data))Missing Values অপসারণ করা:
na.omit()ফাংশন দিয়ে Missing Values সহ সারি মুছে ফেলা যায়।data <- na.omit(data)Missing Values পূরণ করা:
replace_na()বাimpute()পদ্ধতি ব্যবহার করে Missing Values পূরণ করা যায়।data$column <- ifelse(is.na(data$column), median(data$column, na.rm = TRUE), data$column)
১.২. Outliers সনাক্ত এবং মুছে ফেলা
Outliers হল ডেটার এমন মান যা সাধারণ সীমার বাইরে অবস্থিত। এগুলি ডেটার এনালাইসিসের উপর প্রভাব ফেলে।
Outliers সনাক্ত করা:
boxplot(data$column)Outliers মুছে ফেলা:
data <- data[!(data$column > upper_limit | data$column < lower_limit), ]১.৩. ডুপ্লিকেট ডেটা হ্যান্ডলিং
একই ডেটা যদি একাধিকবার থাকে, তাহলে এটি ক্লিন করতে হবে।
data <- data[!duplicated(data), ]১.৪. String Data Cleaning
String ডেটায় অতিরিক্ত স্পেস, বড়/ছোট অক্ষরের সমস্যা থাকতে পারে। trimws() এবং tolower() ব্যবহার করে String ডেটা ক্লিন করা যায়।
data$column <- trimws(data$column) # অতিরিক্ত স্পেস সরানো
data$column <- tolower(data$column) # সব ছোট অক্ষরে রূপান্তর২. Data Transformation Techniques
ডেটা ট্রান্সফরমেশন হল ডেটাকে পরিবর্তন করে একটি নতুন কাঠামোতে রূপান্তরিত করা। এর ফলে ডেটা বিশ্লেষণ সহজ হয় এবং এনালাইসিসে আরও কার্যকর ফল পাওয়া যায়।
২.১. Variable Transformation
কিছু ভেরিয়েবল ট্রান্সফরমেশন প্রক্রিয়া ডেটার স্কেল পরিবর্তন করে, যেমন লগ, স্কোয়ার রুট, বা স্ট্যান্ডার্ডাইজেশন।
লগ ট্রান্সফরমেশন:
data$column <- log(data$column)স্কোয়ার রুট ট্রান্সফরমেশন:
data$column <- sqrt(data$column)স্ট্যান্ডার্ডাইজেশন (মিন-ম্যাক্স স্কেলিং):
data$column <- (data$column - min(data$column)) / (max(data$column) - min(data$column))২.২. Encoding Categorical Variables
ক্যাটাগোরিক্যাল ডেটা এনকোড করতে factor() বা ডামি ভেরিয়েবল তৈরি করতে পারেন।
Factor Encoding:
data$column <- as.factor(data$column)Dummy Variable Encoding (যেমন dummies প্যাকেজ ব্যবহার করা):
library(dummies)
data <- dummy.data.frame(data, names = "column", sep = "_")২.৩. Data Aggregation
ডেটা এগ্রিগেশন করা হয় ডেটাকে নির্দিষ্ট গ্রুপ বা ক্লাসে বিভক্ত করে তাদের গড় বা সামগ্রিক তথ্য বের করতে। aggregate() ফাংশন ব্যবহার করে এগ্রিগেট করা যায়।
aggregate(data$column ~ data$group_column, data = data, mean)২.৪. Pivoting and Reshaping Data
R এ pivoting এবং reshaping করা হয় reshape2 প্যাকেজের মাধ্যমে, যার মধ্যে melt() এবং dcast() ফাংশন ব্যবহৃত হয়।
# ডেটা মেল্ট করা
melted_data <- melt(data, id.vars = "ID")
# ডেটা কাস্ট করা
reshaped_data <- dcast(melted_data, ID ~ variable, value.var = "value")২.৫. Date and Time Transformation
R এ ডেটা এবং টাইমের জন্য lubridate প্যাকেজ ব্যবহার করা হয় যা ডেটা বিশ্লেষণ এবং মডেলিংয়ের জন্য গুরুত্বপূর্ণ।
library(lubridate)
# ডেটা ট্রান্সফরমেশন
data$date <- ymd(data$date_column)
data$year <- year(data$date)
data$month <- month(data$date)৩. Data Cleaning এবং Transformation এর উদাহরণ
# একটি উদাহরণ ডেটা ফ্রেম তৈরি করা
data <- data.frame(
ID = 1:5,
Name = c(" John", "Doe ", " Alice ", "Bob", "Alice"),
Age = c(25, 30, NA, 28, 30),
Gender = c("Male", "Female", "Female", "Male", "Female"),
Salary = c(50000, 60000, 70000, 80000, 60000)
)
# Missing Values পূরণ করা
data$Age[is.na(data$Age)] <- mean(data$Age, na.rm = TRUE)
# ডুপ্লিকেট রিমুভ করা
data <- data[!duplicated(data), ]
# স্ট্রিং ক্লিন করা
data$Name <- trimws(data$Name)
data$Name <- tolower(data$Name)
# Salary এর log transformation করা
data$Salary <- log(data$Salary)
# Gender কে factor এ রূপান্তরিত করা
data$Gender <- as.factor(data$Gender)
print(data)সারসংক্ষেপ
- Data Cleaning: ডেটাকে আরও কার্যকরী এবং বিশ্লেষণের জন্য প্রস্তুত করার প্রক্রিয়া। Missing Values, Outliers, Duplicates, এবং String Data পরিষ্কার করা হয়।
- Data Transformation: ডেটাকে স্কেলিং, এনকোডিং, এগ্রিগেশন, এবং রিশেপিং করা হয় যা এনালাইসিস এবং মডেলিংয়ে সহায়তা করে।
R-এ ডেটা ক্লিনিং এবং ট্রান্সফরমেশন টেকনিকগুলি ডেটা এনালাইসিস এবং মেশিন লার্নিংয়ে নির্ভুল ফলাফল পেতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
R এ Filtering, Sorting, এবং Aggregating Data
R প্রোগ্রামিং ভাষায় ডেটা ম্যানিপুলেশন একটি গুরুত্বপূর্ণ দিক, এবং Filtering, Sorting, এবং Aggregating হল তিনটি মৌলিক অপারেশন যা ডেটা বিশ্লেষণে অত্যন্ত সহায়ক। এই অপারেশনগুলো ব্যবহার করে আপনি ডেটাকে প্রয়োজনীয়ভাবে সাজাতে, ফিল্টার করতে এবং বিভিন্ন মেট্রিকস গণনা করতে পারবেন। নিচে প্রতিটি অপারেশন সম্পর্কে বিস্তারিত আলোচনা করা হয়েছে।
১. Filtering Data
Filtering হল একটি পদ্ধতি, যেখানে আপনি একটি ডেটাসেটের মধ্যে থেকে কিছু নির্দিষ্ট শর্ত (conditions) মেনে ডেটা বের করে আনেন। এটি সাধারণত subset() ফাংশন বা লজিক্যাল কন্ডিশন ব্যবহার করে করা হয়।
subset() ফাংশন ব্যবহার:
# একটি ডেটা ফ্রেম তৈরি করা
my_data <- data.frame(
Name = c("Alice", "Bob", "Charlie", "David"),
Age = c(25, 30, 35, 40),
Gender = c("F", "M", "M", "M")
)
# বয়স 30 এর বেশি এমন রেকর্ড ফিল্টার করা
filtered_data <- subset(my_data, Age > 30)
print(filtered_data)এখানে, Age > 30 শর্ত অনুযায়ী Age কলামের মান ৩০ এর বেশি এমন রেকর্ডগুলো ফিল্টার করা হয়েছে।
লজিক্যাল কন্ডিশন দিয়ে ফিল্টার:
# শুধুমাত্র পুরুষদের ফিল্টার করা
filtered_males <- my_data[my_data$Gender == "M", ]
print(filtered_males)এখানে, my_data$Gender == "M" শর্ত অনুযায়ী শুধুমাত্র পুরুষদের (M) ফিল্টার করা হয়েছে।
২. Sorting Data
Sorting হল ডেটাকে একটি নির্দিষ্ট ক্রমে সাজানোর প্রক্রিয়া, যেমন ছোট থেকে বড় (ascending) বা বড় থেকে ছোট (descending)। R-এ order() ফাংশন ব্যবহার করে ডেটা সাজানো হয়।
order() ফাংশন ব্যবহার:
# বয়সের উপর ভিত্তি করে সাজানো
sorted_data <- my_data[order(my_data$Age), ]
print(sorted_data)এখানে, order(my_data$Age) ফাংশন ব্যবহার করে Age কলামের মান অনুযায়ী ডেটা সাজানো হয়েছে (ascending order)।
Descending (বড় থেকে ছোট) সাজানো:
# বয়সের উপর ভিত্তি করে বড় থেকে ছোট সাজানো
sorted_data_desc <- my_data[order(-my_data$Age), ]
print(sorted_data_desc)এখানে, -my_data$Age ব্যবহার করে Age কলামের মান descending order (বড় থেকে ছোট) অনুযায়ী সাজানো হয়েছে।
একাধিক কলামের উপর ভিত্তি করে সাজানো:
# প্রথমে বয়স অনুযায়ী, তারপর নাম অনুযায়ী সাজানো
sorted_data_multi <- my_data[order(my_data$Age, my_data$Name), ]
print(sorted_data_multi)এখানে, Age কলাম অনুযায়ী সাজানোর পর, যদি কোনো বয়সের মান সমান থাকে, তাহলে Name কলাম অনুযায়ী সাজানো হবে।
৩. Aggregating Data
Aggregating হল একটি পদ্ধতি, যা ডেটার উপর কোনো নির্দিষ্ট ফাংশন প্রয়োগ করে সংক্ষেপিত ফলাফল তৈরি করে, যেমন গড়, মোট, গুন, ইত্যাদি। R-এ aggregate() ফাংশন এবং dplyr প্যাকেজের summarise() ফাংশন ব্যবহার করে ডেটা অ্যাগ্রিগেট করা হয়।
aggregate() ফাংশন ব্যবহার:
# বয়স অনুযায়ী গড় হিসাব করা
aggregate(Age ~ Gender, data = my_data, FUN = mean)এখানে, Age ~ Gender ফর্মুলা ব্যবহার করে Gender অনুযায়ী Age কলামের গড় (mean) বের করা হয়েছে।
একাধিক ফাংশন প্রয়োগ:
# বয়সের উপর ভিত্তি করে গড় এবং মোট হিসাব করা
aggregate(Age ~ Gender, data = my_data, FUN = function(x) c(mean = mean(x), sum = sum(x)))এখানে, mean এবং sum দুটি ফাংশন একসাথে প্রয়োগ করে Gender অনুযায়ী Age কলামের গড় এবং মোট মান বের করা হয়েছে।
dplyr প্যাকেজ ব্যবহার করে Aggregation:
dplyr প্যাকেজের group_by() এবং summarise() ফাংশন ব্যবহার করে আরো উন্নত অ্যাগ্রিগেশন করা যায়।
# dplyr প্যাকেজ লোড করা
library(dplyr)
# Gender অনুযায়ী গড় বয়স বের করা
my_data %>%
group_by(Gender) %>%
summarise(mean_age = mean(Age), total_age = sum(Age))এখানে, group_by(Gender) দিয়ে Gender অনুযায়ী গ্রুপ করা হয়েছে এবং summarise() ব্যবহার করে প্রতিটি গ্রুপের গড় বয়স এবং মোট বয়স বের করা হয়েছে।
সারসংক্ষেপ
- Filtering Data:
subset()বা লজিক্যাল কন্ডিশন ব্যবহার করে নির্দিষ্ট শর্ত অনুযায়ী ডেটা ফিল্টার করা হয়। উদাহরণস্বরূপ,Age > 30বাGender == "M"। - Sorting Data:
order()ফাংশন ব্যবহার করে ডেটা সাজানো হয়। আপনি এটি ascending বা descending, একক বা একাধিক কলামের উপর ভিত্তি করে করতে পারেন। - Aggregating Data:
aggregate()অথবাdplyrপ্যাকেজেরgroup_by()এবংsummarise()ফাংশন ব্যবহার করে ডেটা অ্যাগ্রিগেট করা হয়, যেমন গড়, মোট ইত্যাদি।
এভাবে, R-এ Filtering, Sorting, এবং Aggregating অপারেশন ব্যবহার করে আপনি আপনার ডেটাকে সহজে ম্যানিপুলেট করতে পারবেন এবং প্রয়োজনীয় তথ্য বের করে আনতে পারবেন।
R-এ dplyr প্যাকেজের ব্যবহার: select, filter, arrange, mutate, summarise
dplyr হল R-এর একটি অত্যন্ত জনপ্রিয় প্যাকেজ যা ডেটা ম্যানিপুলেশন এবং প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। এটি ডেটা ফ্রেমে বিভিন্ন কার্যক্রম করতে সহজ ও দ্রুত উপায় সরবরাহ করে। dplyr প্যাকেজটি ট্যাবুলার ডেটা (যেমন ডেটা ফ্রেম) এর উপর কাজ করতে সহায়তা করে এবং এটি অনেক বেশি কর্মক্ষম ও পড়তে সহজ কোড তৈরি করতে সাহায্য করে।
এখানে dplyr প্যাকেজের ৫টি মৌলিক ফাংশন—select, filter, arrange, mutate, এবং summarise এর ব্যবহার ব্যাখ্যা করা হবে।
১. select() ফাংশন
select() ফাংশনটি ডেটা ফ্রেম থেকে নির্দিষ্ট কলাম নির্বাচন করতে ব্যবহৃত হয়। এটি নতুন ডেটা ফ্রেম তৈরি করে, যেখানে কেবল নির্বাচিত কলামগুলি থাকে।
উদাহরণ: কলাম নির্বাচন করা
# dplyr প্যাকেজ লোড করা
library(dplyr)
# একটি ডেটা ফ্রেম তৈরি করা
df <- data.frame(
Name = c("John", "Jane", "Tom", "Lucy"),
Age = c(28, 34, 22, 41),
Gender = c("Male", "Female", "Male", "Female"),
Score = c(88, 92, 75, 95)
)
# select ফাংশন দিয়ে 'Name' এবং 'Age' কলাম নির্বাচন
selected_df <- select(df, Name, Age)
print(selected_df)আউটপুট:
Name Age
1 John 28
2 Jane 34
3 Tom 22
4 Lucy 41এখানে, select(df, Name, Age) কোডে শুধুমাত্র Name এবং Age কলামগুলি নির্বাচিত হয়েছে।
২. filter() ফাংশন
filter() ফাংশনটি ডেটা ফ্রেম থেকে নির্দিষ্ট শর্ত অনুযায়ী সারি নির্বাচন করতে ব্যবহৃত হয়। এটি একটি নতুন ডেটা ফ্রেম তৈরি করে, যেখানে কেবল শর্ত পূর্ণকারী সারিগুলি থাকে।
উদাহরণ: শর্ত অনুযায়ী সারি নির্বাচন করা
# filter ফাংশন দিয়ে Age এর 30 এর বেশি হওয়া সারি নির্বাচন
filtered_df <- filter(df, Age > 30)
print(filtered_df)আউটপুট:
Name Age Gender Score
1 Jane 34 Female 92
2 Lucy 41 Female 95এখানে, filter(df, Age > 30) কোডে শুধুমাত্র সেই সারিগুলি নির্বাচন করা হয়েছে, যেখানে Age 30 এর বেশি।
৩. arrange() ফাংশন
arrange() ফাংশনটি ডেটা ফ্রেমের সারিগুলিকে কোনো নির্দিষ্ট কলাম অনুযায়ী বাড়ানো বা কমানো (sort) করে সাজায়। এটি সাধারণত কোনো নির্দিষ্ট ক্রমে ডেটা সাজাতে ব্যবহৃত হয়।
উদাহরণ: Age এর ভিত্তিতে সাজানো
# arrange ফাংশন দিয়ে 'Age' কলামের ভিত্তিতে ডেটা সাজানো (ascending order)
arranged_df <- arrange(df, Age)
print(arranged_df)আউটপুট:
Name Age Gender Score
1 Tom 22 Male 75
2 John 28 Male 88
3 Jane 34 Female 92
4 Lucy 41 Female 95এখানে, arrange(df, Age) কোডে ডেটা Age কলামের ভিত্তিতে সজ্জিত হয়েছে। এর মধ্যে প্রাথমিকভাবে ascending order (ছোট থেকে বড়) অনুসরণ করা হয়েছে।
descending order (অবতরণী ক্রম) এর জন্য:
# Age এর ভিত্তিতে descending order (বড় থেকে ছোট) এ সাজানো
arranged_df_desc <- arrange(df, desc(Age))
print(arranged_df_desc)আউটপুট:
Name Age Gender Score
1 Lucy 41 Female 95
2 Jane 34 Female 92
3 John 28 Male 88
4 Tom 22 Male 75৪. mutate() ফাংশন
mutate() ফাংশনটি নতুন কলাম তৈরি করতে বা বিদ্যমান কলামের মান পরিবর্তন করতে ব্যবহৃত হয়। এটি একটি নতুন ডেটা ফ্রেম তৈরি করে যেখানে নতুন বা পরিবর্তিত কলাম থাকে।
উদাহরণ: নতুন কলাম তৈরি করা
# mutate ফাংশন দিয়ে একটি নতুন কলাম 'Age_in_5_years' তৈরি করা
mutated_df <- mutate(df, Age_in_5_years = Age + 5)
print(mutated_df)আউটপুট:
Name Age Gender Score Age_in_5_years
1 John 28 Male 88 33
2 Jane 34 Female 92 39
3 Tom 22 Male 75 27
4 Lucy 41 Female 95 46এখানে, mutate(df, Age_in_5_years = Age + 5) কোডে Age_in_5_years নামক একটি নতুন কলাম তৈরি করা হয়েছে, যার মান মূল Age কলামের মানের সাথে ৫ যোগ করে।
৫. summarise() ফাংশন (বা summarize())
summarise() ফাংশনটি ডেটা ফ্রেমের সারির উপর নির্দিষ্ট ফাংশন (যেমন গড়, মোট, সর্বাধিক মান ইত্যাদি) প্রয়োগ করে একটি সারাংশ তৈরি করে। এটি সাধারণত গ্রুপিং (grouping) এর জন্য ব্যবহার করা হয়।
উদাহরণ: গড় Age এবং গড় Score বের করা
# summarise ফাংশন দিয়ে গড় 'Age' এবং 'Score' বের করা
summary_df <- summarise(df, avg_age = mean(Age), avg_score = mean(Score))
print(summary_df)আউটপুট:
avg_age avg_score
1 31.25 87.5এখানে, summarise(df, avg_age = mean(Age), avg_score = mean(Score)) কোডে ডেটা ফ্রেমের গড় Age এবং গড় Score বের করা হয়েছে।
গ্রুপিং (grouping) এর সাথে summarise() ব্যবহার:
# গ্রুপিং এবং summarise ফাংশন দিয়ে 'Gender' অনুযায়ী গড় 'Age' বের করা
grouped_summary <- df %>%
group_by(Gender) %>%
summarise(avg_age = mean(Age))
print(grouped_summary)আউটপুট:
# A tibble: 2 × 2
Gender avg_age
<chr> <dbl>
1 Female 37.5
2 Male 25 এখানে, group_by(Gender) দিয়ে Gender কলামের ভিত্তিতে ডেটা গ্রুপ করা হয়েছে এবং তারপরে summarise() ব্যবহার করে প্রতিটি গ্রুপের গড় বয়স বের করা হয়েছে।
সারসংক্ষেপ
select(): কলাম নির্বাচন করতে ব্যবহৃত হয়।filter(): শর্ত অনুযায়ী সারি নির্বাচন করতে ব্যবহৃত হয়।arrange(): ডেটা সজ্জিত (sort) করতে ব্যবহৃত হয়।mutate(): নতুন কলাম তৈরি বা বিদ্যমান কলামের মান পরিবর্তন করতে ব্যবহৃত হয়।summarise(): সারাংশ তৈরি করতে ব্যবহৃত হয়, যেমন গড়, মোট, সর্বাধিক মান ইত্যাদি।
এই ফাংশনগুলো dplyr প্যাকেজের কিছু মৌলিক এবং শক্তিশালী ফাংশন, যা ডেটা ম্যানিপুলেশন এবং বিশ্লেষণে অত্যন্ত কার্যকরী।
R প্রোগ্রামিং: Data Manipulation এর উদাহরণ
Data manipulation হল ডেটার বিভিন্ন অংশ পরিবর্তন, সাজানো, ফিল্টার করা, যোগ করা এবং গণনা করা। R প্রোগ্রামিং ভাষায় ডেটা ম্যানিপুলেশনের জন্য অনেক শক্তিশালী প্যাকেজ এবং ফাংশন রয়েছে, যার মধ্যে সবচেয়ে জনপ্রিয় হচ্ছে dplyr এবং tidyr। এই প্যাকেজগুলি ডেটাকে সহজে এবং কার্যকরীভাবে ম্যানিপুলেট করতে সহায়তা করে।
নিচে dplyr এবং tidyr প্যাকেজ ব্যবহার করে বিভিন্ন ধরনের ডেটা ম্যানিপুলেশনের উদাহরণ দেওয়া হলো।
১. dplyr প্যাকেজের মাধ্যমে Data Manipulation
dplyr প্যাকেজটি ডেটা ম্যানিপুলেশনের জন্য সবচেয়ে জনপ্রিয় প্যাকেজ। এটি ডেটার উপর filtering, arranging, mutating, summarizing এবং selecting এর কাজগুলো সহজ করে তোলে।
dplyr প্যাকেজ ইনস্টল এবং লোড করা:
install.packages("dplyr")
library(dplyr)১.১ filter(): ডেটা ফিল্টার করা
filter() ফাংশন দিয়ে একটি নির্দিষ্ট শর্তে ডেটা ফিল্টার করা হয়।
# একটি ডেটাফ্রেম তৈরি
data <- data.frame(
name = c("John", "Alice", "Bob", "Jane"),
age = c(25, 30, 22, 28),
salary = c(50000, 60000, 40000, 55000)
)
# বয়স 25 এর বেশি যারা তাদের নির্বাচন করা
filtered_data <- filter(data, age > 25)
# আউটপুট
print(filtered_data)১.২ arrange(): ডেটা সাজানো
arrange() ফাংশন ব্যবহার করে ডেটা ক্রম অনুযায়ী সাজানো যায় (ascending বা descending)।
# বয়স অনুযায়ী সাজানো (ascending)
arranged_data <- arrange(data, age)
# আউটপুট
print(arranged_data)১.৩ mutate(): নতুন কলাম যোগ করা
mutate() ফাংশন ব্যবহার করে নতুন কলাম যোগ করা যায়।
# নতুন কলাম যোগ করা (monthly_salary হিসাবে বার্ষিক বেতন ভাগ করা)
mutated_data <- mutate(data, monthly_salary = salary / 12)
# আউটপুট
print(mutated_data)১.৪ select(): নির্দিষ্ট কলাম নির্বাচন করা
select() ফাংশন দিয়ে নির্দিষ্ট কলাম নির্বাচন করা যায়।
# name এবং salary কলাম নির্বাচন করা
selected_data <- select(data, name, salary)
# আউটপুট
print(selected_data)১.৫ summarize(): সারাংশ তৈরি করা
summarize() ফাংশন ব্যবহার করে ডেটার সারাংশ তৈরি করা যায়, যেমন গড়, মোট বা অন্যান্য পরিসংখ্যান।
# গড় বেতন হিসাব করা
summary_data <- summarize(data, avg_salary = mean(salary))
# আউটপুট
print(summary_data)১.৬ group_by(): গ্রুপিং
group_by() ফাংশন দিয়ে ডেটা গ্রুপ করা যায় এবং এরপর সারাংশ তৈরি করা যায়।
# বেতন অনুযায়ী গ্রুপিং এবং গড় বয়স হিসাব করা
grouped_data <- data %>%
group_by(salary) %>%
summarize(avg_age = mean(age))
# আউটপুট
print(grouped_data)২. tidyr প্যাকেজের মাধ্যমে Data Manipulation
tidyr প্যাকেজটি ডেটার গঠন পরিবর্তন করতে সাহায্য করে, যেমন wide-to-long বা long-to-wide ফরম্যাটে ডেটা রূপান্তর করা।
tidyr প্যাকেজ ইনস্টল এবং লোড করা:
install.packages("tidyr")
library(tidyr)২.১ spread(): Long format থেকে Wide format এ রূপান্তর
spread() ফাংশন ব্যবহার করে long format ডেটাকে wide format এ রূপান্তর করা যায়।
# একটি long format ডেটাফ্রেম তৈরি
data_long <- data.frame(
name = c("John", "Alice", "Bob", "Jane"),
key = c("age", "age", "age", "age"),
value = c(25, 30, 22, 28)
)
# long থেকে wide format এ রূপান্তর
data_wide <- spread(data_long, key = key, value = value)
# আউটপুট
print(data_wide)২.২ gather(): Wide format থেকে Long format এ রূপান্তর
gather() ফাংশন ব্যবহার করে wide format ডেটাকে long format এ রূপান্তর করা যায়।
# একটি wide format ডেটাফ্রেম তৈরি
data_wide <- data.frame(
name = c("John", "Alice", "Bob", "Jane"),
age = c(25, 30, 22, 28),
salary = c(50000, 60000, 40000, 55000)
)
# wide থেকে long format এ রূপান্তর
data_long <- gather(data_wide, key = "variable", value = "value", age, salary)
# আউটপুট
print(data_long)২.৩ separate(): এক কলাম থেকে দুটি বা বেশি কলামে ভাগ করা
separate() ফাংশন ব্যবহার করে একটি কলামকে দুটি বা বেশি কলামে ভাগ করা যায়।
# একটি ডেটাফ্রেম তৈরি
data <- data.frame(
name = c("John", "Alice", "Bob", "Jane"),
full_name = c("John Doe", "Alice Smith", "Bob Brown", "Jane Doe")
)
# full_name কলাম থেকে first_name এবং last_name কলাম তৈরি করা
separated_data <- separate(data, full_name, into = c("first_name", "last_name"), sep = " ")
# আউটপুট
print(separated_data)২.৪ unite(): দুটি কলামকে একটিতে একত্রিত করা
unite() ফাংশন ব্যবহার করে দুটি কলামকে একত্রিত করা যায়।
# দুটি কলামকে একত্রিত করা
united_data <- unite(separated_data, full_name, first_name, last_name, sep = " ")
# আউটপুট
print(united_data)৩. Data Manipulation এর কিছু অতিরিক্ত টিপস
Pipes (
%>%): R-এ%>%পাইপ অপারেটর ব্যবহৃত হয় একাধিক ফাংশনকে একসাথে ব্যবহার করতে। এটি কোডকে আরও পরিষ্কার এবং পাঠযোগ্য করে তোলে।# pipes ব্যবহার করে একাধিক কাজ করা data %>% filter(age > 25) %>% select(name, age) %>% arrange(age)Filtering NA Values: NA (missing) মানগুলো ফিল্টার করতে
na.omit()ব্যবহার করা হয়।data_clean <- na.omit(data) # NA মানগুলো বাদ দেয়া
সারসংক্ষেপ
R প্রোগ্রামিংয়ে data manipulation হল ডেটা ম্যানিপুলেশন এর অন্যতম গুরুত্বপূর্ণ দিক। এর মাধ্যমে আপনি ডেটাকে ফিল্টার, সাজানো, নতুন কলাম তৈরি, গ্রুপিং, সারাংশ তৈরি এবং ডেটার গঠন পরিবর্তন করতে পারেন। dplyr এবং tidyr প্যাকেজগুলো ডেটা ম্যানিপুলেশন করার জন্য খুবই শক্তিশালী টুলস, এবং এগুলি ডেটার উপর বিভিন্ন কার্যক্রম পরিচালনা করার জন্য ব্যবহার করা হয়।
- filter(), arrange(), mutate(), select(), summarize() এবং group_by() হল dplyr-এর জনপ্রিয় ফাংশন।
- spread(), gather(), separate(), unite() হল tidyr-এর জনপ্রিয় ফাংশন।
এই ফাংশনগুলির মাধ্যমে আপনি ডেটা প্রক্রিয়া এবং বিশ্লেষণ করতে পারবেন আরও দ্রুত এবং কার্যকরভাবে।
Read more