【问题标题】:How do I automate finding the coefficient of variation for multiple categories?如何自动查找多个类别的变异系数?
【发布时间】:2016-11-22 17:27:38
【问题描述】:

在我的数据中,每个空间单位有 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

非常感谢任何帮助!

【问题讨论】:

    标签: r


    【解决方案1】:

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

    CV <- function(x){
            (sd(x)/mean(x))*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
    

    【讨论】:

    • 非常感谢。只是为了确保我理解:对功能的编辑是为了减少文本,对吗?不一定是因为我的原始代码中存在固有的语法问题?
    • 您的初始函数有效,但效率低下,因为它不能精确计算CV,只是将您的两个输入除以*100。其次,两个输入都是从同一个向量计算出来的,所以最好将整个操作简化并移动到函数内部。您可以轻松aggregate()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多