Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何自动查找多个类别的变异系数?_R - Fatal编程技术网

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

R 如何自动查找多个类别的变异系数?,r,R,在我的数据中,每个空间单元有1000个度量值,我想绘制每个空间单元的变异系数。我知道如何计算整个数据集的变异系数,但如何: 1)创建一个函数,该函数将获取所有类别名称(列中的唯一值)。 2)仅对每个类别中的数据应用CV函数 3)输出结果,以便将其绘制为x=类别和y=CV Iris数据集可以用作示例。假设我想知道每个物种花瓣长度的变异系数。简历本身很简单,但我对它的其余部分感到茫然 data(iris) CV<-function(mean,sd){ (sd/mean)*100 } Iri

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

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

2)仅对每个类别中的数据应用CV函数

3)输出结果,以便将其绘制为x=类别和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
数据(iris)

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

CV <- function(x){
        (sd(x)/mean(x))*100
}

太好了,谢谢。只是为了确保我理解:对函数的编辑是为了减少文本,对吗?不一定是因为我的原始代码中存在固有的语法问题?您的初始函数工作正常,但它效率低下,因为它不能准确计算
CV
,只需将两个输入相互除以
*100
。其次,两个输入都是从同一个向量计算的,因此最好简化整个操作并将其移动到函数中。您可以轻松地
aggregate()
aggregate(Petal.Length ~ Species, 
          data = iris,
          FUN = CV)
#     Species Petal.Length
#1     setosa    11.878522
#2 versicolor    11.030774
#3  virginica     9.940466