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()函数对于理解数据集中两个变量之间的统计关系非常有用。
您可以轻松地针对多个变量分析一个变量,从而了解数据行为。