Google脚本有TrimMeans方法吗?

x33g5p2x  于 2022-10-02  发布在  Go
关注(0)|答案(2)|浏览(216)

我正在Google Drive中创建一个Google Apps脚本,从多个YouTube视频(由相同的渠道上传)加载相同的数据类型,并需要从该数据数组创建一个修剪的平均值。我正在把所有的数据推送到

var = videoStats;

我正在试图弄清楚如何创建一个时刻调整后的平均值(剔除顶部和底部X个异常值后的数据集的平均值)。以下是我目前掌握的情况:

//creating new variable and looping through to create a trimmed mean eliminating top/bottom 40%
  var sortedVidStats = videoStats.sort(function(a, b){return b-a});
  for(n=0; i < sortedVidStats.items.length; i++) {

  }

因为它是一个Google Apps脚本,所以所有这些都发生在同一个定义的函数中,但是有没有Google Apps脚本方法已经执行了这个计算呢?

wswtfjt7

wswtfjt71#

在做了一些额外的搜索之后,根据现有的Java脚本库找到了一个函数来裁剪Mean。我想在这里发布这篇文章,作为如何在Java脚本中创建trimean函数的解决方案

function getTrimmedMean(data, trimAmount) {
    var trimCount = Math.floor(trimAmount*data.length);
    var trimData = data.sort().slice(trimCount, data.length-trimCount);
    return trimData.reduce((a, b) => a + b ,0)/trimData.length;
  }

  var trimVideoStats = getTrimmedMean(videoStats, 0.4);
  return trimVideoStats;
2w3rbyxf

2w3rbyxf2#

function getTrimmedMean(values, trimAmount) {
    var trimCount = Math.floor(trimAmount*values.length);
    Logger.log(trimCount)
    var arr = values.sort((a, b) => a - b)
    var start = 0
    var end = 0
    if (trimCount % 2 == 0){
      start = (trimCount/2)
      end = (values.length - (trimCount/2))
    }else{
      start = ((trimCount - 1)/2)
      end =  (values.length - (trimCount - ((trimCount - 1)/2)))
    }
    arr = arr.slice(start,end)
    Logger.log(arr)
    return arr.reduce((a, b) => a + b, 0) / arr.length;
  }

相关问题