在 sparkR 中使用聚合函数
Using the agg-function in sparkR
假设我们有一个包含 ID 的数据集 'data',对于每个 ID,我们有很多 'scores'。例如,对于 ID=1,我们有分数 25,41,23,...,33.
对于用户1,我想计算这个用户的总分。在 sparkR 中我这样做
s = filter(data, data$user==1)
ss = agg(s, summa = sum(s$score) )
现在 'ss' 给出了 ID=1 的 'scores' 的总和。我想创建一个数据集,在其中获取所有 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 中不起作用。它说 "invalid type/length (S4/0) in vector allocation"。有什么好办法吗?
agg 在 groupedData 上完美运行,因此使用
agg(groupBy(data, user), summa = sum(score))
我不确定是否有必要使用 data$score 而不是 score,或者是否遵循文档
agg(groupBy(data,user), score="sum")
假设我们有一个包含 ID 的数据集 'data',对于每个 ID,我们有很多 'scores'。例如,对于 ID=1,我们有分数 25,41,23,...,33.
对于用户1,我想计算这个用户的总分。在 sparkR 中我这样做
s = filter(data, data$user==1)
ss = agg(s, summa = sum(s$score) )
现在 'ss' 给出了 ID=1 的 'scores' 的总和。我想创建一个数据集,在其中获取所有 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 中不起作用。它说 "invalid type/length (S4/0) in vector allocation"。有什么好办法吗?
agg 在 groupedData 上完美运行,因此使用
agg(groupBy(data, user), summa = sum(score))
我不确定是否有必要使用 data$score 而不是 score,或者是否遵循文档
agg(groupBy(data,user), score="sum")