1 فراخوانی کتابخانه ها و آماده سازی

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readr)

2 بارگزاری دیتا فریم

emot <- read_csv("E:\\Acoustic features.csv")
## Rows: 400 Columns: 51
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): Class
## dbl (50): _RMSenergy_Mean, _Lowenergy_Mean, _Fluctuation_Mean, _Tempo_Mean, ...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(emot)

3 اطلاعات نوع داده

class(emot)
## [1] "spec_tbl_df" "tbl_df"      "tbl"         "data.frame"

4 خلاصه داده

glimpse(emot)
## Rows: 400
## Columns: 51
## $ Class                                            <chr> "relax", "relax", "re…
## $ `_RMSenergy_Mean`                                <dbl> 0.052, 0.125, 0.046, …
## $ `_Lowenergy_Mean`                                <dbl> 0.591, 0.439, 0.639, …
## $ `_Fluctuation_Mean`                              <dbl> 9.136, 6.680, 10.578,…
## $ `_Tempo_Mean`                                    <dbl> 130.043, 142.240, 188…
## $ `_MFCC_Mean_1`                                   <dbl> 3.997, 4.058, 2.775, …
## $ `_MFCC_Mean_2`                                   <dbl> 0.363, 0.516, 0.903, …
## $ `_MFCC_Mean_3`                                   <dbl> 0.887, 0.785, 0.502, …
## $ `_MFCC_Mean_4`                                   <dbl> 0.078, 0.397, 0.329, …
## $ `_MFCC_Mean_5`                                   <dbl> 0.221, 0.556, 0.287, …
## $ `_MFCC_Mean_6`                                   <dbl> 0.118, 0.799, 0.140, …
## $ `_MFCC_Mean_7`                                   <dbl> -0.151, -0.403, -0.24…
## $ `_MFCC_Mean_8`                                   <dbl> -0.131, -0.264, 0.025…
## $ `_MFCC_Mean_9`                                   <dbl> 0.129, -0.057, -0.112…
## $ `_MFCC_Mean_10`                                  <dbl> 0.154, 0.288, -0.422,…
## $ `_MFCC_Mean_11`                                  <dbl> 0.274, 0.309, 0.018, …
## $ `_MFCC_Mean_12`                                  <dbl> 0.232, 0.049, 0.179, …
## $ `_MFCC_Mean_13`                                  <dbl> 0.246, 0.027, 0.138, …
## $ `_Roughness_Mean`                                <dbl> 51.542, 336.839, 39.8…
## $ `_Roughness_Slope`                               <dbl> 0.325, 0.366, 0.224, …
## $ `_Zero-crossingrate_Mean`                        <dbl> 403.129, 204.886, 685…
## $ `_AttackTime_Mean`                               <dbl> 0.028, 0.015, 0.033, …
## $ `_AttackTime_Slope`                              <dbl> -0.014, -0.079, -0.27…
## $ `_Rolloff_Mean`                                  <dbl> 1844.664, 1181.067, 1…
## $ `_Eventdensity_Mean`                             <dbl> 1.336, 1.336, 1.336, …
## $ `_Pulseclarity_Mean`                             <dbl> 0.082, 0.051, 0.299, …
## $ `_Brightness_Mean`                               <dbl> 0.173, 0.117, 0.496, …
## $ `_Spectralcentroid_Mean`                         <dbl> 1121.368, 896.047, 41…
## $ `_Spectralspread_Mean`                           <dbl> 1970.389, 1959.622, 4…
## $ `_Spectralskewness_Mean`                         <dbl> 3.621, 4.134, 0.902, …
## $ `_Spectralkurtosis_Mean`                         <dbl> 18.037, 21.990, 2.366…
## $ `_Spectralflatness_Mean`                         <dbl> 0.030, 0.025, 0.091, …
## $ `_EntropyofSpectrum_Mean`                        <dbl> 0.806, 0.765, 0.897, …
## $ `_Chromagram_Mean_1`                             <dbl> 0.496, 0.000, 0.412, …
## $ `_Chromagram_Mean_2`                             <dbl> 0.000, 0.142, 0.245, …
## $ `_Chromagram_Mean_3`                             <dbl> 0.047, 0.137, 0.526, …
## $ `_Chromagram_Mean_4`                             <dbl> 0.030, 0.076, 0.095, …
## $ `_Chromagram_Mean_5`                             <dbl> 0.314, 0.112, 0.519, …
## $ `_Chromagram_Mean_6`                             <dbl> 0.038, 0.000, 0.001, …
## $ `_Chromagram_Mean_7`                             <dbl> 0.024, 0.120, 0.563, …
## $ `_Chromagram_Mean_8`                             <dbl> 0.951, 0.000, 0.282, …
## $ `_Chromagram_Mean_9`                             <dbl> 0.426, 0.002, 0.184, …
## $ `_Chromagram_Mean_10`                            <dbl> 1.000, 1.000, 0.746, …
## $ `_Chromagram_Mean_11`                            <dbl> 0.008, 0.000, 0.016, …
## $ `_Chromagram_Mean_12`                            <dbl> 0.101, 0.984, 1.000, …
## $ `_HarmonicChangeDetectionFunction_Mean`          <dbl> 0.316, 0.285, 0.413, …
## $ `_HarmonicChangeDetectionFunction_Std`           <dbl> 0.261, 0.211, 0.299, …
## $ `_HarmonicChangeDetectionFunction_Slope`         <dbl> 0.018, -0.082, 0.134,…
## $ `_HarmonicChangeDetectionFunction_PeriodFreq`    <dbl> 1.035, 3.364, 1.682, …
## $ `_HarmonicChangeDetectionFunction_PeriodAmp`     <dbl> 0.593, 0.702, 0.692, …
## $ `_HarmonicChangeDetectionFunction_PeriodEntropy` <dbl> 0.970, 0.967, 0.963, …

5 تعداد varو obs

nrow(emot)
## [1] 400
ncol(emot)
## [1] 51

6 تبدیل متغیر کیفی

emot <- emot |> 
  mutate(
    Class = as.factor(Class)
  )

glimpse(emot)
## Rows: 400
## Columns: 51
## $ Class                                            <fct> relax, relax, relax, …
## $ `_RMSenergy_Mean`                                <dbl> 0.052, 0.125, 0.046, …
## $ `_Lowenergy_Mean`                                <dbl> 0.591, 0.439, 0.639, …
## $ `_Fluctuation_Mean`                              <dbl> 9.136, 6.680, 10.578,…
## $ `_Tempo_Mean`                                    <dbl> 130.043, 142.240, 188…
## $ `_MFCC_Mean_1`                                   <dbl> 3.997, 4.058, 2.775, …
## $ `_MFCC_Mean_2`                                   <dbl> 0.363, 0.516, 0.903, …
## $ `_MFCC_Mean_3`                                   <dbl> 0.887, 0.785, 0.502, …
## $ `_MFCC_Mean_4`                                   <dbl> 0.078, 0.397, 0.329, …
## $ `_MFCC_Mean_5`                                   <dbl> 0.221, 0.556, 0.287, …
## $ `_MFCC_Mean_6`                                   <dbl> 0.118, 0.799, 0.140, …
## $ `_MFCC_Mean_7`                                   <dbl> -0.151, -0.403, -0.24…
## $ `_MFCC_Mean_8`                                   <dbl> -0.131, -0.264, 0.025…
## $ `_MFCC_Mean_9`                                   <dbl> 0.129, -0.057, -0.112…
## $ `_MFCC_Mean_10`                                  <dbl> 0.154, 0.288, -0.422,…
## $ `_MFCC_Mean_11`                                  <dbl> 0.274, 0.309, 0.018, …
## $ `_MFCC_Mean_12`                                  <dbl> 0.232, 0.049, 0.179, …
## $ `_MFCC_Mean_13`                                  <dbl> 0.246, 0.027, 0.138, …
## $ `_Roughness_Mean`                                <dbl> 51.542, 336.839, 39.8…
## $ `_Roughness_Slope`                               <dbl> 0.325, 0.366, 0.224, …
## $ `_Zero-crossingrate_Mean`                        <dbl> 403.129, 204.886, 685…
## $ `_AttackTime_Mean`                               <dbl> 0.028, 0.015, 0.033, …
## $ `_AttackTime_Slope`                              <dbl> -0.014, -0.079, -0.27…
## $ `_Rolloff_Mean`                                  <dbl> 1844.664, 1181.067, 1…
## $ `_Eventdensity_Mean`                             <dbl> 1.336, 1.336, 1.336, …
## $ `_Pulseclarity_Mean`                             <dbl> 0.082, 0.051, 0.299, …
## $ `_Brightness_Mean`                               <dbl> 0.173, 0.117, 0.496, …
## $ `_Spectralcentroid_Mean`                         <dbl> 1121.368, 896.047, 41…
## $ `_Spectralspread_Mean`                           <dbl> 1970.389, 1959.622, 4…
## $ `_Spectralskewness_Mean`                         <dbl> 3.621, 4.134, 0.902, …
## $ `_Spectralkurtosis_Mean`                         <dbl> 18.037, 21.990, 2.366…
## $ `_Spectralflatness_Mean`                         <dbl> 0.030, 0.025, 0.091, …
## $ `_EntropyofSpectrum_Mean`                        <dbl> 0.806, 0.765, 0.897, …
## $ `_Chromagram_Mean_1`                             <dbl> 0.496, 0.000, 0.412, …
## $ `_Chromagram_Mean_2`                             <dbl> 0.000, 0.142, 0.245, …
## $ `_Chromagram_Mean_3`                             <dbl> 0.047, 0.137, 0.526, …
## $ `_Chromagram_Mean_4`                             <dbl> 0.030, 0.076, 0.095, …
## $ `_Chromagram_Mean_5`                             <dbl> 0.314, 0.112, 0.519, …
## $ `_Chromagram_Mean_6`                             <dbl> 0.038, 0.000, 0.001, …
## $ `_Chromagram_Mean_7`                             <dbl> 0.024, 0.120, 0.563, …
## $ `_Chromagram_Mean_8`                             <dbl> 0.951, 0.000, 0.282, …
## $ `_Chromagram_Mean_9`                             <dbl> 0.426, 0.002, 0.184, …
## $ `_Chromagram_Mean_10`                            <dbl> 1.000, 1.000, 0.746, …
## $ `_Chromagram_Mean_11`                            <dbl> 0.008, 0.000, 0.016, …
## $ `_Chromagram_Mean_12`                            <dbl> 0.101, 0.984, 1.000, …
## $ `_HarmonicChangeDetectionFunction_Mean`          <dbl> 0.316, 0.285, 0.413, …
## $ `_HarmonicChangeDetectionFunction_Std`           <dbl> 0.261, 0.211, 0.299, …
## $ `_HarmonicChangeDetectionFunction_Slope`         <dbl> 0.018, -0.082, 0.134,…
## $ `_HarmonicChangeDetectionFunction_PeriodFreq`    <dbl> 1.035, 3.364, 1.682, …
## $ `_HarmonicChangeDetectionFunction_PeriodAmp`     <dbl> 0.593, 0.702, 0.692, …
## $ `_HarmonicChangeDetectionFunction_PeriodEntropy` <dbl> 0.970, 0.967, 0.963, …

7 مشاهده variable ها

names(emot)
##  [1] "Class"                                         
##  [2] "_RMSenergy_Mean"                               
##  [3] "_Lowenergy_Mean"                               
##  [4] "_Fluctuation_Mean"                             
##  [5] "_Tempo_Mean"                                   
##  [6] "_MFCC_Mean_1"                                  
##  [7] "_MFCC_Mean_2"                                  
##  [8] "_MFCC_Mean_3"                                  
##  [9] "_MFCC_Mean_4"                                  
## [10] "_MFCC_Mean_5"                                  
## [11] "_MFCC_Mean_6"                                  
## [12] "_MFCC_Mean_7"                                  
## [13] "_MFCC_Mean_8"                                  
## [14] "_MFCC_Mean_9"                                  
## [15] "_MFCC_Mean_10"                                 
## [16] "_MFCC_Mean_11"                                 
## [17] "_MFCC_Mean_12"                                 
## [18] "_MFCC_Mean_13"                                 
## [19] "_Roughness_Mean"                               
## [20] "_Roughness_Slope"                              
## [21] "_Zero-crossingrate_Mean"                       
## [22] "_AttackTime_Mean"                              
## [23] "_AttackTime_Slope"                             
## [24] "_Rolloff_Mean"                                 
## [25] "_Eventdensity_Mean"                            
## [26] "_Pulseclarity_Mean"                            
## [27] "_Brightness_Mean"                              
## [28] "_Spectralcentroid_Mean"                        
## [29] "_Spectralspread_Mean"                          
## [30] "_Spectralskewness_Mean"                        
## [31] "_Spectralkurtosis_Mean"                        
## [32] "_Spectralflatness_Mean"                        
## [33] "_EntropyofSpectrum_Mean"                       
## [34] "_Chromagram_Mean_1"                            
## [35] "_Chromagram_Mean_2"                            
## [36] "_Chromagram_Mean_3"                            
## [37] "_Chromagram_Mean_4"                            
## [38] "_Chromagram_Mean_5"                            
## [39] "_Chromagram_Mean_6"                            
## [40] "_Chromagram_Mean_7"                            
## [41] "_Chromagram_Mean_8"                            
## [42] "_Chromagram_Mean_9"                            
## [43] "_Chromagram_Mean_10"                           
## [44] "_Chromagram_Mean_11"                           
## [45] "_Chromagram_Mean_12"                           
## [46] "_HarmonicChangeDetectionFunction_Mean"         
## [47] "_HarmonicChangeDetectionFunction_Std"          
## [48] "_HarmonicChangeDetectionFunction_Slope"        
## [49] "_HarmonicChangeDetectionFunction_PeriodFreq"   
## [50] "_HarmonicChangeDetectionFunction_PeriodAmp"    
## [51] "_HarmonicChangeDetectionFunction_PeriodEntropy"

8 کاربرد تابع slice

8.1 مشاهده سه ردیف اول

emot |> 
  slice(1:3)
## # A tibble: 3 × 51
##   Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
##   <fct>             <dbl>             <dbl>               <dbl>         <dbl>
## 1 relax             0.052             0.591                9.14          130.
## 2 relax             0.125             0.439                6.68          142.
## 3 relax             0.046             0.639               10.6           188.
## # ℹ 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## #   `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## #   `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## #   `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## #   `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## #   `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>,
## #   `_AttackTime_Mean` <dbl>, `_AttackTime_Slope` <dbl>, …

8.2 مشاهده ردیف آخر

emot |> 
  slice(n())
## # A tibble: 1 × 51
##   Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
##   <fct>             <dbl>             <dbl>               <dbl>         <dbl>
## 1 angry             0.086             0.475                5.34          152.
## # ℹ 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## #   `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## #   `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## #   `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## #   `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## #   `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>,
## #   `_AttackTime_Mean` <dbl>, `_AttackTime_Slope` <dbl>, …

8.3 نمونه گیری تصادفی هفت ردیف

emot |> 
  slice_sample(n = 5)
## # A tibble: 5 × 51
##   Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
##   <fct>             <dbl>             <dbl>               <dbl>         <dbl>
## 1 sad               0.021             0.652                7.52         160. 
## 2 relax             0.142             0.534                6.85          82.3
## 3 angry             0.052             0.528                4.86         134. 
## 4 happy             0.167             0.582                7.89         190. 
## 5 relax             0.1               0.548                5.39         165. 
## # ℹ 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## #   `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## #   `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## #   `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## #   `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## #   `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>,
## #   `_AttackTime_Mean` <dbl>, `_AttackTime_Slope` <dbl>, …

8.4 مشاهده بیشترین مقدار تمپو

emot |> 
  slice_max(`_Tempo_Mean`)
## # A tibble: 1 × 51
##   Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
##   <fct>             <dbl>             <dbl>               <dbl>         <dbl>
## 1 angry             0.101             0.562                5.90          195.
## # ℹ 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## #   `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## #   `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## #   `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## #   `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## #   `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>,
## #   `_AttackTime_Mean` <dbl>, `_AttackTime_Slope` <dbl>, …

9 کاربرد تابع select

9.1 بخش های مربوظ به انرژی صوتی همراه متغیر هدف

emot |> 
  select(Class,`_RMSenergy_Mean`,`_Lowenergy_Mean`,`_Fluctuation_Mean`)
## # A tibble: 400 × 4
##    Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean`
##    <fct>             <dbl>             <dbl>               <dbl>
##  1 relax             0.052             0.591                9.14
##  2 relax             0.125             0.439                6.68
##  3 relax             0.046             0.639               10.6 
##  4 relax             0.135             0.603               10.4 
##  5 relax             0.066             0.591                9.77
##  6 relax             0.137             0.51                 7.66
##  7 relax             0.123             0.533                7.48
##  8 relax             0.103             0.575                7.01
##  9 relax             0.145             0.542                6.85
## 10 relax             0.129             0.618                8.67
## # ℹ 390 more rows

9.2 میزان تمپو و متغیر هدف اول سپس ادامه به ترتیب قبلی

emot |> 
  select(`_Tempo_Mean`,Class,everything())
## # A tibble: 400 × 51
##    `_Tempo_Mean` Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean`
##            <dbl> <fct>             <dbl>             <dbl>               <dbl>
##  1         130.  relax             0.052             0.591                9.14
##  2         142.  relax             0.125             0.439                6.68
##  3         188.  relax             0.046             0.639               10.6 
##  4          66.0 relax             0.135             0.603               10.4 
##  5          88.9 relax             0.066             0.591                9.77
##  6         116.  relax             0.137             0.51                 7.66
##  7         136.  relax             0.123             0.533                7.48
##  8         141.  relax             0.103             0.575                7.01
##  9          82.0 relax             0.145             0.542                6.85
## 10          93.0 relax             0.129             0.618                8.67
## # ℹ 390 more rows
## # ℹ 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## #   `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## #   `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## #   `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## #   `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## #   `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>, …

9.3 مشاهده متغیر هایی که با کلمه R شروع میشوند

emot |> 
  select(starts_with("_R"))
## # A tibble: 400 × 4
##    `_RMSenergy_Mean` `_Roughness_Mean` `_Roughness_Slope` `_Rolloff_Mean`
##                <dbl>             <dbl>              <dbl>           <dbl>
##  1             0.052              51.5              0.325           1845.
##  2             0.125             337.               0.366           1181.
##  3             0.046              39.9              0.224          10779.
##  4             0.135             354.               0.215           6746.
##  5             0.066              46.9             -0.118           3328.
##  6             0.137             249.               0.04            5093.
##  7             0.123             336.               0.272            887.
##  8             0.103             293.               0.345           8090.
##  9             0.145             738.               0.38            1584.
## 10             0.129             215.               0.185           6397.
## # ℹ 390 more rows

9.4 مشاهده متغیر هایی که با sتمام میشوند

emot |> 
  select(ends_with("s"))
## # A tibble: 400 × 1
##    Class
##    <fct>
##  1 relax
##  2 relax
##  3 relax
##  4 relax
##  5 relax
##  6 relax
##  7 relax
##  8 relax
##  9 relax
## 10 relax
## # ℹ 390 more rows

9.5 مشاهده متغیر هایی که در آنها از حروف oug استفاده شده است

emot |> 
  select(contains("oug"))
## # A tibble: 400 × 2
##    `_Roughness_Mean` `_Roughness_Slope`
##                <dbl>              <dbl>
##  1              51.5              0.325
##  2             337.               0.366
##  3              39.9              0.224
##  4             354.               0.215
##  5              46.9             -0.118
##  6             249.               0.04 
##  7             336.               0.272
##  8             293.               0.345
##  9             738.               0.38 
## 10             215.               0.185
## # ℹ 390 more rows

10 کاربرد تابع arrange

10.1 داده هارا بر اساس میزان تمپو صعودی مرتب کنید

emot |> 
  arrange(`_Tempo_Mean`)
## # A tibble: 400 × 51
##    Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
##    <fct>             <dbl>             <dbl>               <dbl>         <dbl>
##  1 sad               0.153             0.554                7.17          48.3
##  2 happy             0.11              0.449               16.2           52.0
##  3 relax             0.084             0.56                 8.45          52.8
##  4 relax             0.15              0.567                7.83          52.9
##  5 sad               0.1               0.558                6.04          53.0
##  6 angry             0.151             0.562                5.73          54.5
##  7 angry             0.115             0.587                4.30          54.9
##  8 relax             0.167             0.63                 8.21          55.0
##  9 relax             0.129             0.593                6.69          55.3
## 10 happy             0.143             0.505                6.93          58.1
## # ℹ 390 more rows
## # ℹ 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## #   `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## #   `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## #   `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## #   `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## #   `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>, …

10.2 داده ها را بر اساس میزان تمپو نزولی مرتب کنید

emot |> 
  arrange(desc(`_Tempo_Mean`))
## # A tibble: 400 × 51
##    Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
##    <fct>             <dbl>             <dbl>               <dbl>         <dbl>
##  1 angry             0.101             0.562                5.90          195.
##  2 sad               0.085             0.58                 6.13          194.
##  3 happy             0.132             0.537                6.85          194.
##  4 happy             0.168             0.604                7.63          192.
##  5 happy             0.167             0.582                7.89          190.
##  6 happy             0.077             0.552                7.35          189.
##  7 happy             0.077             0.552                7.35          189.
##  8 relax             0.109             0.575                6.61          188.
##  9 relax             0.046             0.639               10.6           188.
## 10 happy             0.065             0.512               17.3           188.
## # ℹ 390 more rows
## # ℹ 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## #   `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## #   `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## #   `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## #   `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## #   `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>, …

11 کاربرد تابع filter

11.1 آهنگ هایی که تمپو بالای 150 دارند و تغییرات انرزی بالای 5

emot |> 
  filter(`_Tempo_Mean` > 150 , `_Fluctuation_Mean` > 5)
## # A tibble: 87 × 51
##    Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
##    <fct>             <dbl>             <dbl>               <dbl>         <dbl>
##  1 relax             0.046             0.639               10.6           188.
##  2 relax             0.068             0.659                8.58          182.
##  3 relax             0.14              0.522                7.12          158.
##  4 relax             0.068             0.613                6.29          176.
##  5 relax             0.127             0.508                9.59          179.
##  6 relax             0.1               0.548                5.39          165.
##  7 relax             0.123             0.515                6.56          168.
##  8 relax             0.083             0.543                6.06          179.
##  9 relax             0.109             0.575                6.61          188.
## 10 relax             0.093             0.543               10.1           182.
## # ℹ 77 more rows
## # ℹ 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## #   `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## #   `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## #   `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## #   `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## #   `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>, …

11.2 تعداد آهنگ های شاد

happy_emot <- emot |> 
  filter(Class == "happy")
nrow(happy_emot)
## [1] 100

11.3 چند درصد داده ها مربوط به آهنگای شاد است

mean(emot$Class == "happy")*100
## [1] 25

11.4 تعداد آهنگ هایی که غمگین یا خشن هستند

sad_angry_emot <- emot |> 
  filter(Class %in% c("sad","angry"))
nrow(sad_angry_emot)
## [1] 200

12 کاردبرد تابع mutate و transmute

12.1 ستونی بسازید که میزان خشونت صدا نسبت به انرژی کل را نشان دهد

emot <- emot |> 
  mutate(RbyR = `_Roughness_Mean` / `_RMSenergy_Mean`)

12.2 ستونی بسازید که زمان حمله صدا را به سه دسته تقسیم کند

emot <- emot |> 
  mutate(Attack_time_type = case_when(
    `_AttackTime_Mean` < 0.05 ~ "Short",
    `_AttackTime_Mean` < 0.15 ~ "Medium",
    TRUE ~ "Long"
    
  ))

12.2.1 ستون های جدید که ساختید را به همراه متغیر هدف نمایش دهید

emot |> 
  select(Attack_time_type,RbyR,Class)
## # A tibble: 400 × 3
##    Attack_time_type  RbyR Class
##    <chr>            <dbl> <fct>
##  1 Short             991. relax
##  2 Short            2695. relax
##  3 Short             867. relax
##  4 Short            2620. relax
##  5 Short             710. relax
##  6 Short            1820. relax
##  7 Medium           2734. relax
##  8 Short            2848. relax
##  9 Short            5089. relax
## 10 Short            1667. relax
## # ℹ 390 more rows

12.3 متغیر tempo_metr را طوری بسازید که آهنگ ها را بر اساس میزان تمپو به سه دسته Low , Medium و High تقسیم بندی کند و آن را همرا با ستون متغیر هدف در دیتاستی جدید نمایش دهد

emot |> 
  transmute(
    Class,
    tempo_metr = case_when(
      `_Tempo_Mean` < 90 ~ "Low",
      `_Tempo_Mean` < 130 ~ "Medium",
      TRUE ~ "High"
    )
  )
## # A tibble: 400 × 2
##    Class tempo_metr
##    <fct> <chr>     
##  1 relax High      
##  2 relax High      
##  3 relax High      
##  4 relax Low       
##  5 relax Low       
##  6 relax Medium    
##  7 relax High      
##  8 relax High      
##  9 relax Low       
## 10 relax Medium    
## # ℹ 390 more rows

13 خلاصه سازی و استفاده از توابع group_by و summarise

13.1 یک جدول خلاصه سازی شده بسازید که برای هر class تعداد آهنگ ها و tempo_Mean را نمایش دهد

Tempo_summary <- emot |> 
  group_by(Class) |> 
  summarise(
    count_song = n(),
    avg_tempo = mean(`_Tempo_Mean`, na.rm = TRUE)
  ) |> 
  ungroup()

13.1.1 دیدن جدول

Tempo_summary
## # A tibble: 4 × 3
##   Class count_song avg_tempo
##   <fct>      <int>     <dbl>
## 1 angry        100      129.
## 2 happy        100      124.
## 3 relax        100      113.
## 4 sad          100      128.