মূল কন্টেন্টে যান
মডিউল 4 · 2-এর পাঠ 2কোর্সে 8/10~15 min
মডিউল পাঠ (2/2)

মিউটেশন এবং অ্যাগ্রিগেশন

নির্বাচন এবং ফিল্টারিংয়ের বাইরে, dplyr নতুন গণনা করা কলাম তৈরি করতে এবং গোষ্ঠীগুলিতে একত্রিত করে ডেটা সংক্ষিপ্ত করার জন্য শক্তিশালী ক্ষমতা সরবরাহ করে।


নতুন কলাম তৈরি করা হচ্ছে: mutate()

mutate() ক্রিয়াটি আপনাকে নতুন কলাম গণনা করতে বা বিদ্যমান কলামগুলিকে সংশোধন করার অনুমতি দেয়, সমস্ত মূল কলাম অক্ষত রেখে৷

R
# Adds a 'double_salary' column computed as 'salary' multiplied by 2
df %>%
  mutate(double_salary = salary * 2)

# You can create multiple columns at once
df %>%
  mutate(
    total_cost = quantity * price,
    tax = total_cost * 0.22
  )

গ্রুপিং এবং একত্রিত করা: group_by() এবং summarise()

প্রায়শই, ডেটা বিশ্লেষণের জন্য সারির নির্দিষ্ট গোষ্ঠীগুলির জন্য সারাংশের পরিসংখ্যান (যেমন গড়, যোগফল, গণনা) গণনা করা প্রয়োজন (উদাহরণস্বরূপ, প্রতিটি বিভাগের গড় বেতন গণনা করা)।

1. group_by()

এক বা একাধিক কলামের মান দ্বারা ডেটা ফ্রেমকে গোষ্ঠীবদ্ধ করে। নিজে থেকেই, এটি ডেটার ভিজ্যুয়াল চেহারা পরিবর্তন করে না, তবে এটি dplyr-এর সংকেত দেয় যে পরবর্তী অপারেশনগুলি "গ্রুপ দ্বারা গ্রুপ" চালানো উচিত।

2. summarise() (বা summarize())

mean(), sum(), min(), max(), বা n() (যেটি সারি) এর মতো পরিসংখ্যানগত ফাংশন প্রয়োগ করে অনেকগুলি সারিকে একটি একক সারাংশের সারিতে সঙ্কুচিত করে।

R
# Calculates the average salary per department
df %>%
  group_by(department) %>%
  summarise(mean_salary = mean(salary))

আপনি যদি প্রতিটি গ্রুপের কতগুলি রেকর্ড গণনা করতে চান:

R
# Counts how many employees are in each city
df %>%
  group_by(city) %>%
  summarise(count = n())

নিজে চেষ্টা করে দেখুন

অনুশীলনী 1: একটি গণনা করা কলাম তৈরি করুন

ব্যায়াম#r.m4.l2.e1
প্রচেষ্টা: 0লোড হচ্ছে...

ডেটা ফ্রেম df দেওয়া, mutate() ব্যবহার করে পরিমাণ কলামকে মূল্য কলাম দ্বারা গুণ করে total_price নামে একটি নতুন কলাম তৈরি করুন। ফলাফলটি df_new এ সংরক্ষণ করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

ডিএফ-এ একটি পাইপলাইনের ভিতরে মিউটেট (মোট_মূল্য = পরিমাণ * মূল্য) ব্যবহার করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

অনুশীলনী 2: গোষ্ঠীবদ্ধ করুন এবং গড় সহ সংক্ষিপ্ত করুন

ব্যায়াম#r.m4.l2.e2
প্রচেষ্টা: 0লোড হচ্ছে...

বেতন কলামের গড় গণনা করুন, বিভাগ কলাম দ্বারা রেকর্ডগুলিকে গোষ্ঠীবদ্ধ করুন। মানে_বেতন নামের সমষ্টিগত কলামটি সংরক্ষণ করুন এবং df_grouped-এ চূড়ান্ত ফলাফল নির্ধারণ করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

USA df %>% group_by(department) %>% সারসংক্ষেপ(mean_salary = গড়(বেতন))

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম 3: গ্রুপ প্রতি উপাদান গণনা

ব্যায়াম#r.m4.l2.e3
প্রচেষ্টা: 0লোড হচ্ছে...

প্রতিটি শহরের (শহর কলাম) জন্য সারির সংখ্যা গণনা করুন। n() ফাংশন ব্যবহার করে summarise() এর ভিতরে কাউন্ট ভেরিয়েবলে গণনা বরাদ্দ করুন এবং df_counts-এ চূড়ান্ত ফলাফল সংরক্ষণ করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

উনা পাইপলাইনে সমন্বিত গ্রুপ_বাই(শহর) কন সারসংক্ষেপ(গণনা = n())।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

অনুশীলনী 4: একাধিক সারাংশ

ব্যায়াম#r.m4.l2.e4
প্রচেষ্টা: 0লোড হচ্ছে...

বিভাগ কলাম দ্বারা মূল্য কলাম গ্রুপিং এর সর্বনিম্ন মান (min_price) এবং সর্বাধিক মান (max_price) গণনা করুন। ফলাফলটি df_summary-এ সংরক্ষণ করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

সংক্ষিপ্তসার() ভিতরে, min_price = min(price) এবং max_price = max(price) মেট্রিক্স একটি কমা দিয়ে আলাদা করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম 5: গ্রুপিং এবং সম্মিলিত ফিল্টার

ব্যায়াম#r.m4.l2.e5
প্রচেষ্টা: 0লোড হচ্ছে...

একটি পাইপলাইন লিখুন যা ডিপার্টমেন্ট কলাম দ্বারা df গ্রুপ করে, mutate() ব্যবহার করে নতুন কলাম avg_salary-এ সঞ্চয় করে বেতনের গড় গণনা করে (দ্রষ্টব্য: মিউটেট ব্যবহার করুন, সারসংক্ষেপ নয়, সমস্ত সারি রাখার জন্য), এবং সবশেষে avg_s-এর থেকে কঠোরভাবে বেশি বেতন সহ রেকর্ড রাখার জন্য ফিল্টার করুন। res এ সংরক্ষণ করুন.

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

USA df %>% group_by(department) %>% mutate(avg_salary = গড়(বেতন)) %>% ফিল্টার(বেতন > avg_salary)

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ