每组平均值

时间:2016-01-17 18:47:55

标签: r

我有重复计算每个国家/地区产品平均价格的任务。价格和国家/地区代码(例如,ES =西班牙,TR =土耳其)位于我的数据框中的两个不同列中。如何使用for循环迭代不同的国家?

var data = [{ "lable": "parent1", "level": 0 }, { "lable": "child1", "level": 1 }, { "lable": "child2", "level": 2 }, { "lable": "parent2", "level": 0 }, { "lable": "child1", "level": 1 }, { "lable": "child2", "level": 2 }, { "lable": "child3", "level": 3 }, { "lable": "child4", "level": 1 }, { "lable": "child5", "level": 2 }],
    tree = [],
    level = [tree];

data.forEach(function (a) {
    var o = { text: a.lable, children: [] };
    level[a.level].push(o);
    level[a.level + 1] = o.children;
    level.length = a.level + 2;
});
document.write('<pre>' + JSON.stringify(tree, 0, 4) + '</pre>');

2 个答案:

答案 0 :(得分:1)

您有一个拆分 - 应用 - 合并问题。尝试类似:

aggregate(priceusd ~ destinationcountry, data = training.data.raw, FUN = mean) 

例如,从可重现的数据:

> aggregate(Sepal.Length ~ Species, data = iris, FUN = mean)
     Species Sepal.Length
1     setosa        5.006
2 versicolor        5.936
3  virginica        6.588

使用基本R函数和附加软件包,有很多方法可以做到这一点。搜索“split-apply-combine”应该会引导您进入所有这些。

答案 1 :(得分:0)

您可以使用dplyr执行此操作。

library(dplyr)

training.data.raw                %>%
    group_by(destinationcountry) %>%
    summary(avg = mean(priceusd))     # Avg computed for each group in destinationcountry

这将计算每组的平均值。