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


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

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

 aggregate(df$col_to_aggregate, list(df$col_to_group_by), FUN=sd)

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

 library (dplyr)

df %>%
  group_by(col_to_group_by) %>%
  summarise_at(vars(col_to_aggregate), list(name=sd))

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

 library (data.table)

setDT(df)

dt[ ,list(sd=sd(col_to_aggregate)), by=col_to_group_by]

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

 #create data frame
df <- data. frame (team=rep(c(' A ', ' B ', ' C '), each= 6 ),
                 points=c(8, 10, 12, 12, 14, 15, 10, 11, 12,
                          18, 22, 24, 3, 5, 5, 6, 7, 9))

#view data frame
df

   team points
1 to 8
2 to 10
3 to 12
4 to 12
5 to 14
6 to 15
7 B 10
8 B 11
9 B 12
10 B 18
11 B 22
12 B 24
13 C 3
14 C 5
15 C 5
16 C 6
17 C 7
18 C 9

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

يوضح التعليمة البرمجية التالية كيفية استخدام وظيفة Aggregate() لقاعدة بيانات R لحساب الانحراف المعياري للنقاط التي سجلها الفريق:

 #calculate standard deviation of points by team
aggregate(df$points, list(df$team), FUN=sd)

  Group.1 x
1 A 2.562551
2 B 6.013873
3 C 2.041241

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

يوضح التعليمة البرمجية التالية كيفية استخدام الدالتين group_by () و summarise_at() من حزمة dplyr لحساب الانحراف المعياري للنقاط التي سجلها الفريق:

 library (dplyr)

#calculate standard deviation of points scored by team
df %>%
  group_by(team) %>%
  summarise_at(vars(points), list(name=sd))

# A tibble: 3 x 2
  team name
   
1 to 2.56
2 B 6.01
3C 2.04

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

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

 library (data.table)

#convert data frame to data table 
setDT(df)

#calculate standard deviation of points scored by team
df[,list(sd=sd(points)), by=team]

   team sd
1: A 2.562551
2: B 6.013873
3:C2.041241

لاحظ أن الطرق الثلاثة جميعها ترجع نفس النتائج.

ملاحظة : إذا كنت تعمل باستخدام إطار بيانات كبير للغاية، فمن المستحسن استخدام أسلوب dplyr أو data.table لأن هذه الحزم تعمل بشكل أسرع بكثير من قاعدة R.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في R:

كيفية حساب المتوسط لكل مجموعة في R
كيفية حساب المبلغ حسب المجموعة في R
كيفية حساب الكميات حسب المجموعة في R

Add a Comment

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