كيفية حساب القيم الفريدة حسب المجموعة في r (مع أمثلة)


يمكنك استخدام الطرق التالية لحساب عدد القيم الفريدة لكل مجموعة في R:

الطريقة الأولى: استخدم Base R

 results <- aggregate(data=df, values_var~group_var, function (x) length ( unique (x)))

الطريقة الثانية: استخدم dplyr

 library (dplyr)

results <- df %>%
  group_by(group_var) %>%
  summarize(count = n_distinct (values_var))

الطريقة الثالثة: استخدام data.table

 library (data.table)

df <- data.table(df)
results <- df[, .(count = length ( unique (values_var))), by = group_var]

تُرجع كل طريقة نفس النتيجة تمامًا، لكن طريقة R الأساسية تميل إلى أن تكون أبطأ بشكل ملحوظ عند العمل مع إطارات البيانات الكبيرة.

توضح الأمثلة التالية كيفية استخدام كل من هذه الطرق عمليًا مع إطار البيانات التالي:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 10, 14, 14, 18, 19, 20, 20, 20))

#view data frame
df

  team points
1 to 10
2 to 10
3 to 14
4 to 14
5 B 18
6 B 19
7 C 20
8 C 20
9 C 20

الطريقة الأولى: حساب القيم الفريدة حسب المجموعة باستخدام Base R

الكود التالي يوضح كيفية حساب عدد قيم النقاط المميزة لكل فريق يستخدم قاعدة R:

 #count unique points values by team
results <- aggregate(data=df, points~team, function (x) length ( unique (x)))

#view results
results

  team points
1 TO 2
2 B 2
3 C 1

ومن النتيجة يمكننا أن نرى:

  • هناك قيمتان فريدتان للنقاط للفريق أ.
  • هناك قيمتان فريدتان للنقاط للفريق B.
  • توجد قيمة نقطة واحدة فريدة للفريق C.

الطريقة الثانية: حساب القيم الفريدة حسب المجموعة باستخدام dplyr

يوضح الكود التالي كيفية حساب عدد قيم النقاط المميزة لكل فريق يستخدم dplyr:

 library (dplyr)

#count unique points values by team
results <- df %>%
  group_by(team) %>%
  summarize(count = n_distinct (points))

#view results
results

# A tibble: 3 x 2
  team count
1 TO 2
2 B 2
3 C 1

لاحظ أن هذه النتائج تتطابق مع نتائج طريقة R الأساسية.

الطريقة الثالثة: حساب القيم الفريدة حسب المجموعة باستخدام data.table

يوضح الكود التالي كيفية حساب عدد قيم النقاط المميزة لكل فريق يستخدم data.table:

 library (data.table)

#convert data frame to data table
df <- data.table(df)

#count unique points values by team 
results <- df[, .(count = length ( unique (points))), by = team]

#view results
results

   team count
1 TO 2
2:B2
3: C 1

لاحظ أن هذه النتائج تتطابق مع الطريقتين السابقتين.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية إجراء عمليات شائعة أخرى باستخدام dplyr:

كيفية إعادة ترميز القيم باستخدام dplyr
كيفية استبدال NA بصفر في dplyr
كيفية فرز المتغيرات حسب المجموعة باستخدام dplyr
كيفية تحديد الصف الأول حسب المجموعة باستخدام dplyr

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *