如何在R中计算描述性统计(有例子)?

399 阅读3分钟

描述性统计是描述一个数据集的数值。

它们帮助我们了解数据集的中心位置,以及数据集中数值的分布情况。

我们可以用两个函数来计算R中的描述性统计。

方法1:使用summary()函数

summary(my_data)

**summary()**函数在R语言中为数据框中的每个变量计算以下数值。

  • 最小值
  • 第一四分位数
  • 中位数
  • 平均数
  • 第三四分位数
  • 最大值

方法2:使用sapply()函数

sapply(my_data, sd, na.rm=TRUE)

**sapply()函数可以用来计算数据框中每个变量的描述性统计量,而不是用summary()**函数计算的那些。

例如,上面的 **sapply()**函数计算了数据框中每个变量的标准差。

下面的例子显示了如何使用这两个函数来计算R中数据框中变量的描述性统计。

例子。计算R语言中的描述性统计

假设我们在R中拥有以下包含三个变量的数据框。

#create data frame
df <- data.frame(x=c(1, 4, 4, 5, 6, 7, 10, 12),
                 y=c(2, 2, 3, 3, 4, 5, 11, 11),
                 z=c(8, 9, 9, 9, 10, 13, 15, 17))

#view data frame
df

   x  y  z
1  1  2  8
2  4  2  9
3  4  3  9
4  5  3  9
5  6  4 10
6  7  5 13
7 10 11 15
8 12 11 17

我们可以使用 **summary()**函数来计算每个变量的各种描述性统计。

#calculate descriptive statistics for each variable
summary(df)

       x                y                z        
 Min.   : 1.000   Min.   : 2.000   Min.   : 8.00  
 1st Qu.: 4.000   1st Qu.: 2.750   1st Qu.: 9.00  
 Median : 5.500   Median : 3.500   Median : 9.50  
 Mean   : 6.125   Mean   : 5.125   Mean   :11.25  
 3rd Qu.: 7.750   3rd Qu.: 6.500   3rd Qu.:13.50  
 Max.   :12.000   Max.   :11.000   Max.   :17.00 

我们还可以使用括号来只计算数据框中特定变量的描述性统计。

#calculate descriptive statistics for 'x' and 'z' only
summary(df[ , c('x', 'z')])

       x                z        
 Min.   : 1.000   Min.   : 8.00  
 1st Qu.: 4.000   1st Qu.: 9.00  
 Median : 5.500   Median : 9.50  
 Mean   : 6.125   Mean   :11.25  
 3rd Qu.: 7.750   3rd Qu.:13.50  
 Max.   :12.000   Max.   :17.00 

我们还可以使用**sapply()**函数来计算每个变量的特定描述性统计量。

例如,下面的代码显示了如何计算每个变量的标准差。

#calculate standard deviation for each variable
sapply(df, sd, na.rm=TRUE)

       x        y        z 
3.522884 3.758324 3.327376 

我们也可以在**sapply()中使用函数()**来计算描述性统计。

例如,下面的代码显示了如何计算每个变量的范围

#calculate range for each variable
sapply(df, function(df) max(df, na.rm=TRUE)-min(df, na.rm=TRUE))

 x  y  z 
11  9  9

最后,我们可以创建一个复杂的函数来计算一些描述性统计数字,然后将这个函数与**sapply()**函数一起使用。

例如,下面的代码显示了如何计算数据框中每个变量的模式

#define function that calculates mode
find_mode <- function(x) {
  u <- unique(x)
  tab <- tabulate(match(x, u))
  u[tab == max(tab)]
}

#calculate mode for each variable
sapply(df, find_mode)

$x
[1] 4

$y
[1]  2  3 11

$z
[1] 9

从输出结果中我们可以看到。

  • 变量x的模式是4
  • 变量y的模式是2311(因为这些数值中的每一个出现的频率最高)
  • 变量z的模式是9

通过使用**summary()sapply()**函数,我们可以为数据框中的每个变量计算出我们想要的任何描述性统计。