«

»

জুন 02

R পরিচিতি – লেকচার ২.১: R ড্যাটা ম্যানেজমেন্ট

 

লেকচার সারসংক্ষেপ

নেইমড স্পেইস

আমরা R এ কোন ভ্যালু ফিক্স করতে পারি খুব সহজেই। উদাহরণস্বরূপ আমরা a নামে একটা অবজেক্ট তৈরি করে সেটাতে একটা নিউমেরিক বা স্ট্রিং ভ্যালু সেট করে দিতে পারি। এটা করতে আমাদের লিখতে হবে a এরপর লেফট এ্যারো অর্থাত <- টাইপ করে তারপর আমরা যে ভ্যালুটা এ্যাসাইন করতে চাই সেটা লিখতে হবে। আমি যদি ভ্যালু ১০ সিলেক্ট করতে যাই তাহলে লিখতে হবে,
‌‌

a <- 10

একইভাবে,

b <- 13
a + b
c <- a + b
c

বিভিন্ন ভ্যালু বিভিন্ন অবজেক্ট আকারে স্টোর করে সেগুলো বিভিন্ন গণনার কাজে ব্যবহার করতে পারি। এখানে a, b, c প্রতিটাকে আমরা অবজেক্ট বলবো। অবজেক্ট শুধু একটি ভ্যালুই নয়, এটি একটি ম্যাট্রিক্স, ড্যাটা সেট, ভেক্টর ইত্যাদিও হতে পারে।

ধরা যাক, আমি ১০০০ টাকা ব্যাংকে জমা রাখতে চাই। এই ১০০০ টাকার উপরে ব্যাংক আমাকে প্রতি বছর ১০% হারে সুদ দেবে। আমি গণনা করতে চাই ১০ বছর পরে চক্রবৃদ্ধিহারে এই টাকা সুদে আসলে কতো টাকা হবে। এটা গণনা করতে আমাকে প্রথমে প্রয়োজনীয় অংকগুলো স্টোর করে নিতে হবে। স্টোর করার পরে ফরমুলা বসিয়ে খুব সহজেই আমরা আমাদের কাঙ্খিত ফল
বের করে নিতে পারবো।

# Example: named space
inter <- 0.1
noy <- 10
principal <- 1000
fv <- principal* (1+inter)^noy
fv

অবজেক্ট

আমরা বিভিন্ন অবজেক্ট তৈরি করে সেগুলোর তালিকা দেখতে পারি। এটা করতে আমাদের ‌‌‌objects() বা ls() কমান্ড ব্যবহার করতে হবে।

# Listing Objects
objects()
ls()

অপ্রয়োজনীয় কোন অবজেক্ট মুছে ফেলতে হলে,

# Removing single object
remove(a)
rm(b)

মেমরিতে থাকা সমস্ত অবজেক্ট মুছে ফেলতে হলে,

# removing all objects
rm(list=ls())

নিউমেরিক ভেক্টর স্পেইস তৈরি

একটা একক সংখ্যা না এন্ট্রির বদলে আমরা যদি একাধিক সংখ্যা বা এন্ট্রিকে একসাথে এন্টার করতে চাই তাহলে আমাদের c() ফাংশনটি ব্যবহার করতে হবে।

# Vector space: numeric
age <- c(21, 25, 20, 45, 35)
income <- c(120000, 16000, 21000, 35000, 54000)

এখানে আমি age ও income নামে দুটি ভেক্টর তৈরি করেছি। এই ভেক্টরে আমি ৫টি করে এলিমেন্ট যোগ করেছি।

প্রসঙ্গক্রমে আরো দুটো ছোট্ট কমান্ড আমরা জেনে রাখি,

একই সংখ্যা বার বার রিপিট করতে,

# Two commands to remember: seq(), rep()
# rep()
repeat <- rep(1, 5) # repeat 1, 5 times

একটি নির্দিষ্ট সিক্যুয়েন্স তৈরি করতে,

# seq()
seque <- seq(1, 10, by=2)

স্ট্রিং ভেক্টর স্পেইস তৈরি

স্ট্রিং ভেক্টর স্পেস তৈরি করতে আমাদের এলিমেন্টগুলোতে ডাবল কোটের মধ্যে লিখতে হবে। যেমন,

# Vector space: String
names <- c("Abul", "Babul", "Dobir", "Sobir", "Sumona")

ডেইট ভেক্টর স্পেইস তৈরি

স্ট্রিং ভেক্টর স্পেস তৈরি করতে আমাদের এলিমেন্টগুলোতে ডাবল কোটের মধ্যে লিখতে হবে এবং c() ফাংশনের বদলে as.Date ফাংশন ব্যবহার করতে হবে। যেমন,

# Vector space: Date
joining <- as.Date(c("2001-12-15", "2011-1-20", "1999-05-20", "2012-02-20", "2011-01-13"))

এখানে লক্ষ্যনীয়, R কেইস সেনসিটিভ। অর্থাত as.Date এর বদলে as.date লিখলে সেটা কাজ করবে না।

ফ্যাক্টর ভেক্টর স্পেইস তৈরি

পরিসংখ্যানে নমিনাল (nominal) ও অর্ডিনাল (ordinal) ভ্যারিয়েবলকে আমরা R এর পরিভাষায় ফ্যাক্টর (factor) বলে থাকি। এগুলোকে আমরা যথাক্রমে ফ্যাক্টর ও অর্ডারড ফ্যাক্টর বলে উল্লেখ করবো। একটা সাধারণ ফ্যাক্টর (যেমন একটি সিঙ্গেল চয়েস প্রশ্ন যেটার উত্তর দুটি, যা থেকে একটি আউটকাম আসবে। উদাহরণ অংশগ্রহণকারিদের লিঙ্গ) আমরা দুভাবে এন্টার
করে নিতে পারি, প্রথমত,

# Vector space: Factor variables
# Factors are normally nominal variables
# Ordered factors are Ordinal variables
gender <- c("m","m","m","m","f")

এখানে প্রথমে আমরা ড্যাটাটা স্ট্রিং হিসেবে এন্ট্রি করে নিচ্ছি। এরপর আমরা পরীক্ষা করে দেখবো এটি ফ্যাক্টর হিসেবে এন্ট্রি হয়েছে কিনা।

# To check if it is a factor variable
is.factor(gender)

এর উত্তর না সূচক অর্থাত ‌false দেখাবে। ড্যাটাকে ফ্যাক্টর হিসেবে কনভার্ট করতে আমরা উপরে gender নামে যে স্ট্রিং অবজেক্ট তৈরি করেছি সেটাকে factor হিসেবে কনভার্ট করে নিতে,

gender <-as.factor(gender)

কমান্ডটি দিতে হবে। উল্টোটা, অর্থাত factorকে numeric ড্যাটা হিসেবে কনভার্ট করতে আমাদের as.numeric কমান্ডটি ব্যবহার করতে হবে।
তবে এ পদ্ধতিতে ফ্যাক্টর তৈরি করা ঠিক নয়। আপনার ড্যাটাতে সবগুলো ফ্যাকটরের উপস্থিতি না থাকলে সেটাকে আলাদা ফ্যাক্টর হিসেবে গন্য করবে না R। এজন্য ঝামেলা এড়াতে আপনার ফ্যাক্টর ড্যাটা এন্ট্রি করতে প্রথমে নিউমেরিক হিসেবে ড্যাটা এন্ট্রি করে সেটার জন্য সম্ভাব্য label এসাইন করা উচিত।

# factor: other-way around
col <- c(1, 1, 1, 2, 2)

দেখুন এটা ফ্যাক্টর কিনা,

is.factor(col)

false অর্থাত না বোধক উত্তর দেখাবে।
এটাকে ফ্যাক্টরে রূপান্তর এবং সম্ভাব্য ফ্যাক্টরগুলোর ডিফাইন করতে লিখুন,

col <- factor(col, labels=c("blue", "red"))
is.factor(col)
col

অর্ডারড ফ্যাক্টর ভেক্টর স্পেইস তৈরি

অর্ডারড ফ্যাক্টর ভেক্টর স্পেইস তৈরি দুই পদ্ধতিতে তৈরি করা যায়,
প্রথমত, আপনি ফ্যাক্টর ভেক্টর স্পেইসের কমান্ডটি ব্যবহার করে শেষে ordered=TRUE যোগ করে দিতে পারেন,

# levels: 1-very low, 2-low, 3-medium, 4-high, 5-very high
likeord <- c(1, 3, 4, 2, 5)
likeord <- factor(likeord, labels=c("very low", "low", "medium", "high", "very high"), ordered=TRUE)
is.factor(likeord)
levels(likeord)
likeord

অথবা, আপনি ordered functionটি ব্যবহার করতে পারেন,

# levels: 1-very low, 2-low, 3-medium, 4-high, 5-very high
likeord <- c(1, 3, 4, 2, 5)
likeord <- ordered(likeord, labels=c("very low", "low", "medium", "high", "very high"))
is.factor(likeord)
levels(likeord)
likeord

ড্যাটা ফ্রেম

এতোক্ষণ তৈরি করা বিভিন্ন ধরণের ভেক্টর একসাথে জড়ো করে কীভাবে একটি ড্যাটা ফ্রেম তৈরি করা যায় সেটা আমরা দেখবো এখানে। কিছু ভেক্টর থেকে একটি ড্যাটাসেট তৈরি করতে আপনাকে data.frame() ফাংশনটি ব্যবহার করতে হবে। উদাহরণস্বরূপ আমি যদি names, age, income, gender, joining, likeord ভেক্টরগুলো জুড়ে দিয়ে একটি ড্যাটা ফ্রেম অবজেক্ট তৈরি করতে চাই তাহলে আপনাকে
লিখতে হবে,

# Data frame
dat <- data.frame(names, age, gender, joining, likeord)
dat

আপনাকে অবজেক্টের ভেতরে কোন এলিমেন্ট/ভেক্টরে এ্যাক্সেস করতে চাইলে অবজেক্টের নামের শেষে একটি ডলার সাইন দিয়ে তারপর ভেক্টরটির নাম লিখতে হবে। যেমন আমি যদি age ভেক্টরটির এলিমেন্টগুলো দেখতে চাই তাহলে লিখতে হবে,

dat$age

বড় বড় কমান্ডের মধ্যে এই ডলার সাইন দিয়ে ভ্যারিয়েবল/ভেক্টরে এ্যাক্সেস করাটা মাঝে মধ্যে ঝামেলার মনে হতে পারে। এই ঝামেলা এড়াতে ড্যাটাসেট নিয়ে কাজের শুরুতেই ড্যাটা attach করে নিতে পারেন। এটা করতে

attach(dat)

লিখে এন্টার চাপুন। এতে আপনি সরাসরি age লিখে ভ্যারিয়েবল/ভেক্টরে এ্যাক্সেস করতে পারবেন।

আরোও দুটি প্রয়োজনীয় কমান্ড

তৈরি করা ড্যাটাফ্রেম দেখতে

# Viewing data.frame
View(dat)

তৈরি করা ড্যাটাফ্রেম এডিট করতে

# Editing object
edit(dat)

ড্যাটাফ্রেমে নতুন ভ্যারিয়েবল তৈরি করা

age ভ্যারিয়েবলটিকে লগারিদমিক ট্রান্সফরম করতে,

# Computing variable
logage <- log(dat$age)

এবং সেটিকে ড্যাটা ফ্রেমে ঢুকিয়ে নিতে

# Adding new variable into the existing dataframe
dat <- data.frame(dat, logage)
dat

ড্যাটা ফ্রেম সেইভ করা

ড্যাটাকে csv ফরম্যাটে সেইভ করতে,

# Saving data frame into a CSV file
write.csv(dat, file="foo.csv")

 

দরকারি লিংক

১. পুরো লেকচারের R স্কৃপ্ট
২. ভিমিও ভিডিও পর্ব ১
৩. ভিমিও ভিডিও পর্ব ২
৪. অরিজিনাল ভিডিও ফাইল ডাউনলোড পর্ব ১, পর্ব ২
৫. স্লাইড

Comments

comments

About the author

হাসিব মাহমুদ

ব্লগার,
সচলায়তন.কম
নীড়পাতা.কম

Leave a Reply