R中by()函数的基础

时间:2020-02-23 14:43:47  来源:igfitidea点击:

R中的by()函数是一个简单的函数,它使我们可以将数据集中的数据分组,并对其执行数学函数。

它以向量,字符串,矩阵或者数据帧为输入,并根据上述函数计算该数据。

让我们从语法开始

by()函数将数据作为输入,并根据给定函数进行计算。

by(x,indices,FUN)

其中:

  • X =输入数据帧。

  • 指数=它是变量或者因子的列表。

  • FUN =需要应用于变量/因数的函数。

R中by()函数的简单示例

在本节中,我们将尝试一个简单的示例。
为此,我们使用" iris"数据集。
使用此数据集的原因是它包含有关数值的分类数据。

让我们通过以下代码导入数据集。

#importing data and assigning to variable df
df<-iris

#computes the mean for species categories in terms of petal.width 
by(df$Petal.Width,list(df$Species),mean)

Output = 
--------------------------------------------------------
: setosa
[1] 0.246
---------------------------------------------------------- 
: versicolor
[1] 1.326
---------------------------------------------------------- 
: virginica
[1] 2.026
---------------------------------------------------------

在上一节中,您可以看到by函数通过将其与petal.width分组来返回物种类别的平均值。
同样,您可以将任何函数传递给by(),它将基于指定的变量返回输出。

df<-iris

by(df$Petal.Width,list(df$Species),median)

Output =
--------------------------------------------------------
: setosa
[1] 0.2
---------------------------------------------------------- 
: versicolor
[1] 1.3
---------------------------------------------------------- 
: virginica
[1] 2
---------------------------------------------------------

在上面的输出中,我将中值函数作为输入传递给by,并且by()函数返回计算出的值。
即物种类别的平均值,以花瓣宽度表示。

具有多个列表的by()函数

在本节中,我们将看到如何向by()函数添加多个列表。

为此,我们将使用" Toothgrowth"数据集,因为它包含多个列以及分类数据。

让我们看看它是如何工作的。

#importing dataset
df<-ToothGrowth

#passing multiple columns 
by(df$len,list(df$supp,df$dose),mean)

Output = 

: OJ
: 0.5
[1] 13.23
---------------------------------------------------------- 
: VC
: 0.5
[1] 7.98
---------------------------------------------------------- 
: OJ
: 1
[1] 22.7
---------------------------------------------------------- 
: VC
: 1
[1] 16.77
---------------------------------------------------------- 
: OJ
: 2
[1] 26.06
---------------------------------------------------------- 
: VC
: 2
[1] 26.14

如您在上面的输出中所看到的,我们在代码中传递了2个列表,并且by()函数返回了计算值。
您可以看到补充剂和剂量长度的平均值。

好吧,by()函数对于理解数据集中两个变量之间的统计关系非常有用。

您可以轻松地针对多个变量分析一个变量,从而了解数据行为。