0

假设我们有一个包含 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 的分数总和。

例如,在 RI 中会这样做

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)”。有什么好的方法吗?

4

1 回答 1

1

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

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

我不确定是否有必要放置 data$score 而不是 score,或者遵循文档

agg(groupBy(data,user), score="sum")
于 2015-08-04T12:38:44.100 回答