在sparkR中使用agg-function

时间:2015-08-04 12:05:41

标签: r sparkr

假设我们有一个包含ID的数据集“数据”,对于每个ID,我们都有很多“得分”。例如,对于ID = 1,我们得分为25,41,23,...,33。

对于用户1,我想计算该用户得分的总和。在sparkR中我这样做

s = filter(data, data$user==1)
ss = agg(s, summa = sum(s$score) )

现在'ss'给了我ID = 1的'得分'的总和。我想创建一个数据集,在其中我得到所有ID的分数总和。

在R中我会这样做

newdata=matrix()
for(i in 1: Number of ID's ) {
    s = filter(data, data$user==i)         
newdata[i,] = c(i ,agg(s, summa = sum(s$score)) )
}

但这在sparkR中不起作用。它说“向量分配中的无效类型/长度(S4 / 0)”。有没有好办法呢?

1 个答案:

答案 0 :(得分:1)

agg在groupedData上完美运行,因此使用

agg(groupBy(data, user), summa = sum(score))

我不确定是否有必要将数据分数而不是分数,或者遵循文档

agg(groupBy(data,user), score="sum")