从Lua复杂表格中获取平均数/中位数/众数

感谢您对lua的支持,我很新,目前我的应用程序运行良好。

我制作了一个应用程序,将输入数千个不同物品的数字。我尝试为每个物品找到均值/中位数/众数,我已经能够对单个物品进行这样做,但对于所有物品却没有。

这是我的表结构:

for i = 0, 1500 do
            local e = {}
            e.seller,
            e.buyer,
            e.itemName,
            e.soldAmount = GetSoldAmount(FromMember(i))
       table.insert(allSalesTempTable, e)
end

表格输出格式

  [1] =
                {
                    ["itemName"] = [[Salad]]
                    ["buyer"] = [[@Mike]],
                    ["eventType"] = 15,
                    ["soldAmount"] = 150,
                    ["seller"] = [[@Sarah]],
                },
  [2] =
                {
                    ["itemName"] = [Pizza]
                    ["buyer"] = [[@James]],
                    ["eventType"] = 15,
                    ["soldAmount"] = 150,
                    ["seller"] = [[@Sarah]],
                },
  [3] =
                {
                    ["itemName"] = [Salad]
                    ["buyer"] = [[@Frank]],
                    ["eventType"] = 15,
                    ["soldAmount"] = 75,
                    ["seller"] = [[@Sarah]],
                },
  [4] ...

 },

然后我正在尝试将表/数组发送到此平均函数

stats={}

-- 获取表的平均值
    function stats.mean( t )
        local sum = 0
        local count= 0
        local tempTbl = {}

(这完全不会起作用,但是这是我到目前为止所尝试的)
    for k,v in pairs(t) do tempTbl[k] = v
        if v.itemName == tempTbl.itemName then
            sum = sum + v.soldAmount
            count = count + 1
        end
    end

    return (sum / count)
end

---开始函数 stats.mean(e)

这里是我感到困惑的地方,我不确定在将数据收集到第一个临时表中时是否可以添加平均值,还是需要在拥有所有数据后重新计算?如果需要在之后执行,则我的stats.mean(e)需要一种插入方法? 我正在尝试获得此输出:

  [1] =
                {
                    ["itemName"] = [[Salad]]
                    ["buyer"] = [[@Mike]],
                    ["eventType"] = 15,
                    ["soldAmount"] = 150,
                    ["seller"] = [[@Sarah]],
                    ["mean"] = 112.5   - 新的插入方式
                },
  [2] =
                {
                    ["itemName"] = [Pizza]
                    ["buyer"] = [[@James]],
                    ["eventType"] = 15,
                    ["soldAmount"] = 150,
                    ["seller"] = [[@Sarah]],
                    ["mean"] = 150   - 新的插入方式
                },
  [3] =
                {
                    ["itemName"] = [Salad]
                    ["buyer"] = [[@Frank]],
                    ["eventType"] = 15,
                    ["soldAmount"] = 75,
                    ["seller"] = [[@Sarah]],
                    ["mean"] = 112.5   - 新的插入方式
                },
  [4] ...

 },

我已经为这个问题工作了几天,一旦发现如何调整我的格式以获得平均数并插入现有表中,我就能够轻松找出均值/最小/最大/中位数/模式。

点赞