如何自动查找多个类别的变异系数?

Jes*_*001 3 r

在我的数据中,我对每个空间单位有 1000 个度量,并想绘制每个单位的变异系数。我知道如何计算整个数据集的变异系数,但我将如何:

1) 创建一个函数来获取所有类别名称(列中的唯一值)。

2) 仅将 CV 函数应用于每个类别中的那些数据

3) 输出结果,以便将它们绘制为 x=category 和 y=CV

可以使用 Iris 数据集作为示例。假设我想知道每个物种的花瓣长度变异系数。简历本身很简单,但我对它的其余部分不知所措。

data(iris)
CV<-function(mean,sd){
  (sd/mean)*100
}
IrisCV<-CV(mean=mean(iris$Petal.Length), sd=sd(iris$Petal.Length))
IrisCV
Run Code Online (Sandbox Code Playgroud)

任何帮助深表感谢!

mto*_*oto 8

首先,您应该将函数更改为:

CV <- function(x){
        (sd(x)/mean(x))*100
}
Run Code Online (Sandbox Code Playgroud)

然后你可以使用aggregate()

aggregate(Petal.Length ~ Species, 
          data = iris,
          FUN = CV)
#     Species Petal.Length
#1     setosa    11.878522
#2 versicolor    11.030774
#3  virginica     9.940466
Run Code Online (Sandbox Code Playgroud)

  • 您的初始函数有效,但效率低下,因为它不能准确计算“CV”,只是将您的两个输入相互除以“*100”。其次,两个输入都是从同一个向量计算出来的,所以最好在函数内部简化和移动整个操作。您可以轻松地`aggregate()`。 (2认同)