0.1 স্টেপ ১: প্যাকেজ ইনস্টলেশন ও লোডিং
ব্যাখ্যা:
msleepডাটাসেটে ৮৩টি স্তন্যপায়ী প্রাণীর ঘুম সম্পর্কিত ডাটা আছেএতে নাম, ঘুমের সময়, ব্রেইন ওজন, বডি ওজন ইত্যাদি তথ্য আছে
এটি
ggplot2প্যাকেজের সাথে আসে
0.2 টিপ ১: সরল ফিল্টারিং (সিংগেল কন্ডিশন)
১.১ যেসব প্রাণী ১৮ ঘণ্টার বেশি ঘুমায়
Code
# A tibble: 4 × 2
name sleep_total
<chr> <dbl>
1 Big brown bat 19.7
2 Thick-tailed opposum 19.4
3 Little brown bat 19.9
4 Giant armadillo 18.1
ব্যাখ্যা:
%>%পাইপ অপারেটর ডাটাকে পরের ফাংশনে পাঠায়select()শুধু name ও sleep_total কলাম রাখেfilter(sleep_total > 18)শুধুমাত্র ১৮-এর বেশি ঘুমানো প্রাণীগুলো রাখে
১.২ যেসব প্রাণী ১৮ ঘণ্টার কম ঘুমায়
Code
# A tibble: 79 × 2
name sleep_total
<chr> <dbl>
1 Cheetah 12.1
2 Owl monkey 17
3 Mountain beaver 14.4
4 Greater short-tailed shrew 14.9
5 Cow 4
6 Three-toed sloth 14.4
7 Northern fur seal 8.7
8 Vesper mouse 7
9 Dog 10.1
10 Roe deer 3
# ℹ 69 more rows
ব্যাখ্যা:
!হলো লজিক্যাল NOT অপারেটর!sleep_total > 18মানে “NOT (sleep_total > 18)”এটি
sleep_total <= 18এর সমতুল্য
0.3 টিপ ২: মাল্টিপল কন্ডিশন (AND অপারেটর)
২.১ কমা (,) ব্যবহার করে AND অপারেশন
Code
# A tibble: 3 × 4
name order bodywt sleep_total
<chr> <chr> <dbl> <dbl>
1 Human Primates 62 8
2 Chimpanzee Primates 52.2 9.7
3 Baboon Primates 25.2 9.4
ব্যাখ্যা:
কমা (,) দিয়ে একাধিক কন্ডিশন দিলে সেটি AND অপারেটর হিসেবে কাজ করে
অর্থাৎ: order == “Primates” এবং bodywt > 20
দুইটি শর্তই পূরণ হতে হবে
২.২ এম্পারস্যান্ড (&) ব্যবহার করে
Code
# A tibble: 3 × 4
name order bodywt sleep_total
<chr> <chr> <dbl> <dbl>
1 Human Primates 62 8
2 Chimpanzee Primates 52.2 9.7
3 Baboon Primates 25.2 9.4
দুইটিই একই কাজ করে। আপনি যেকোনোটা ব্যবহার করতে পারেন!
0.4 টিপ ৩: OR অপারেটর ব্যবহার
৩.১ পাইপ (|) দিয়ে OR অপারেশন
Code
# A tibble: 33 × 4
name order bodywt sleep_total
<chr> <chr> <dbl> <dbl>
1 Cheetah Carnivora 50 12.1
2 Owl monkey Primates 0.48 17
3 Cow Artiodactyla 600 4
4 Northern fur seal Carnivora 20.5 8.7
5 Goat Artiodactyla 33.5 5.3
6 Grivet Primates 4.75 10
7 Asian elephant Proboscidea 2547 3.9
8 Horse Perissodactyla 521 2.9
9 Donkey Perissodactyla 187 3.1
10 Patas monkey Primates 10 10.9
# ℹ 23 more rows
ব্যাখ্যা:
|হলো লজিক্যাল OR অপারেটরযেকোনো একটি শর্ত পূরণ হলেই হবে
অর্থাৎ: Primates অর্ডারের প্রাণী অথবা ২০ কেজির বেশি ওজনের প্রাণী
0.5 টিপ ৪: মাল্টিপল ভ্যালু ফিল্টারিং
৪.১ %in% অপারেটর ব্যবহার (সেরা পদ্ধতি)
Code
# A tibble: 3 × 2
name sleep_total
<chr> <dbl>
1 Horse 2.9
2 Rabbit 8.4
3 Tiger 15.8
ব্যাখ্যা:
%in%চেক করে name ভেক্টরের মানগুলো c() ভেক্টরের মধ্যে আছে কিনাঅনেক বেশি নামের জন্য সহজ এবং পড়তে সুবিধা
0.6 টিপ ৫: রেঞ্জ ফিল্টারিং
৫.১ between() ফাংশন ব্যবহার
Code
# A tibble: 37 × 2
name sleep_total
<chr> <dbl>
1 Cheetah 12.1
2 Mountain beaver 14.4
3 Greater short-tailed shrew 14.9
4 Three-toed sloth 14.4
5 Dog 10.1
6 Grivet 10
7 Chinchilla 12.5
8 Star-nosed mole 10.3
9 European hedgehog 10.1
10 Patas monkey 10.9
# ℹ 27 more rows
ব্যাখ্যা:
between(column, lower, upper)ফাংশন রেঞ্জ চেক করেএখানে: 10 ≤ sleep_total ≤ 16
সীমার মানগুলো অন্তর্ভুক্ত করে (inclusive)
৫.২ near() ফাংশন ব্যবহার
Code
# A tibble: 3 × 2
name sleep_total
<chr> <dbl>
1 Owl monkey 17
2 Long-nosed armadillo 17.4
3 Arctic ground squirrel 16.6
ব্যাখ্যা:
near(value, target, tol = tolerance)tol = tolerance বা সহনশীলতা (ডিফল্ট 0.0000001)
এখানে: 16.5 ≤ sleep_total ≤ 17.5
0.7 টিপ ৬: মিসিং ভ্যালু (NA) হ্যান্ডলিং
৬.১ যেসব প্রাণীর conservation status জানা নেই
Code
# A tibble: 29 × 3
name conservation sleep_total
<chr> <chr> <dbl>
1 "Owl monkey" <NA> 17
2 "Three-toed sloth" <NA> 14.4
3 "Vesper mouse" <NA> 7
4 "African giant pouched rat" <NA> 8.3
5 "Western american chipmunk" <NA> 14.9
6 "Galago" <NA> 9.8
7 "Human" <NA> 8
8 "Macaque" <NA> 10.1
9 "Vole " <NA> 12.8
10 "Little brown bat" <NA> 19.9
# ℹ 19 more rows
ব্যাখ্যা:
is.na()ফাংশন চেক করে ভ্যালু missing (NA) কিনাconservation কলামে NA থাকলে সেই সারিগুলো ফিল্টার করবে
৬.২ যেসব প্রাণীর conservation status জানা আছে
Code
# A tibble: 54 × 3
name conservation sleep_total
<chr> <chr> <dbl>
1 Cheetah lc 12.1
2 Mountain beaver nt 14.4
3 Greater short-tailed shrew lc 14.9
4 Cow domesticated 4
5 Northern fur seal vu 8.7
6 Dog domesticated 10.1
7 Roe deer lc 3
8 Goat lc 5.3
9 Guinea pig domesticated 9.4
10 Grivet lc 10
# ℹ 44 more rows
ব্যাখ্যা:
!is.na()মানে “NOT missing”conservation কলামে যেসব প্রাণীর তথ্য আছে শুধু সেগুলোই রাখবে
0.8 প্রাকটিক্যাল উদাহরণ
Code
# প্র্যাকটিস: বিভিন্ন ফিল্টার একসাথে
library(tidyverse)
# উদাহরণ ১: ভারী ও কম ঘুমানো প্রাণী
heavy_light_sleepers <- msleep %>%
select(name, vore, bodywt, sleep_total, conservation) %>%
filter(bodywt > 50, sleep_total < 8) %>%
arrange(desc(bodywt))
# উদাহরণ ২: কমপ্লেক্স ফিল্টার
complex_filter <- msleep %>%
select(name, order, vore, bodywt, sleep_total, conservation) %>%
filter(
# কন্ডিশন ১: ওজন ১০-৫০ কেজি
between(bodywt, 10, 50),
# কন্ডিশন ২: ঘুম ৮-১২ ঘণ্টা
sleep_total >= 8 & sleep_total <= 12,
# কন্ডিশন ৩: conservation জানা নেই অথবা domesticated
is.na(conservation) | conservation == "domesticated"
)
# ফলাফল দেখুন
print(heavy_light_sleepers)# A tibble: 13 × 5
name vore bodywt sleep_total conservation
<chr> <chr> <dbl> <dbl> <chr>
1 African elephant herbi 6654 3.3 vu
2 Asian elephant herbi 2547 3.9 en
3 Giraffe herbi 900. 1.9 cd
4 Pilot whale carni 800 2.7 cd
5 Cow herbi 600 4 domesticated
6 Horse herbi 521 2.9 domesticated
7 Brazilian tapir herbi 208. 4.4 vu
8 Donkey herbi 187 3.1 domesticated
9 Bottle-nosed dolphin carni 173. 5.2 <NA>
10 Caspian seal carni 86 3.5 vu
11 Gray seal carni 85 6.2 lc
12 Sheep herbi 55.5 3.8 domesticated
13 Common porpoise carni 53.2 5.6 vu
# A tibble: 2 × 6
name order vore bodywt sleep_total conservation
<chr> <chr> <chr> <dbl> <dbl> <chr>
1 Dog Carnivora carni 14 10.1 domesticated
2 Baboon Primates omni 25.2 9.4 <NA>
0.9 অপারেটর সারাংশ
| অপারেটর | অর্থ | উদাহরণ | ||
|---|---|---|---|---|
> |
বড় | filter(sleep_total > 18) |
||
< |
ছোট | filter(sleep_total < 5) |
||
>= |
বড় বা সমান | filter(weight >= 20) |
||
<= |
ছোট বা সমান | filter(weight <= 100) |
||
== |
সমান | filter(order == "Primates") |
||
!= |
অসমান | filter(order != "Rodentia") |
||
%in% |
তালিকার মধ্যে | filter(name %in% c("A", "B")) |
||
is.na() |
মিসিং ভ্যালু | filter(is.na(conservation)) |
||
!is.na() |
মিসিং নয় | filter(!is.na(conservation)) |
||
, বা &
|
AND (এবং) | filter(a > 10, b < 20) |
||
| ` | ` | OR (অথবা) | `filter(a > 10 | b < 20)` |
! |
NOT (না) | filter(!(a > 10)) |
||
between() |
মধ্যে | filter(between(x, 10, 20)) |
||
near() |
কাছাকাছি | filter(near(x, 15, tol = 1)) |
0.10 প্র্যাকটিস সমস্যা
Code
# সমস্যা ১: যেসব প্রাণী ১৫ ঘণ্টার বেশি ঘুমায় এবং ৫০ কেজির কম
prob1 <- msleep %>%
filter(sleep_total > 15, bodywt < 50)
# সমস্যা ২: Primates বা Carnivora অর্ডারের প্রাণী
prob2 <- msleep %>%
filter(order %in% c("Primates", "Carnivora"))
# সমস্যা ৩: যেসব প্রাণীর ব্রেইন ওজন জানা আছে কিন্তু বডি ওজন জানা নেই
prob3 <- msleep %>%
filter(!is.na(brainwt), is.na(bodywt))
# সমস্যা ৪: ১০-২০ কেজি ওজনের এবং ৮-১২ ঘণ্টা ঘুমানো প্রাণী
prob4 <- msleep %>%
filter(between(bodywt, 10, 20),
between(sleep_total, 8, 12))0.11 ✅ মনে রাখার বিষয়
R-এ ফিল্টারিং শেখা ডাটা অ্যানালাইসিসের প্রথম ধাপ
tidyverseপ্যাকেজ সবচেয়ে জনপ্রিয় ও সহজপ্রতিদিন ১৫-২০ মিনিট প্র্যাকটিস করলে ১ সপ্তাহে দক্ষ হয়ে যাবেন
ভুল করলে ভয় পাবেন না - ভুল থেকে শেখাই আসল মজা!
পাওয়ার টিপ: dplyr::filter() ফাংশনের মধ্যে if_any() বা if_all() ব্যবহার করে একসাথে অনেক কলাম ফিল্টার করা যায়!