0

在 SparkR 我有一个 DataFrame data。它包含time和。gameid

head(data)

然后给出 ID = 1 4 1 1 215 985 ..., game= 1 5 1 10 和时间 2012-2-1, 2013-9-9, ... 现在game包含从 1 到 10 的数字的游戏类型。

对于给定的游戏类型,我想找到最短时间,这意味着第一次玩这个游戏。对于游戏类型 1,我这样做

data1 <- filter(data, data$game == 1)

这个新数据包含游戏类型 1 的所有数据。要找到我这样做的最短时间

g <- groupBy(data1, game$time)
first(arrange(g, desc(g$time)))

但这不能在 sparkR 中运行。它说“S4 类型的对象不可子集”。

游戏 1 已在 2012-01-02、2013-05-04、2011-01-04、... 我想找到最短时间。

4

3 回答 3

1

通过键入

arrange(game, game$time)

我得到了所有的time排序。通过first使用函数,我得到了第一个条目。如果我想要最后一个条目,我只需输入这个

first(arrange(game, desc(game$time)))
于 2015-09-15T09:52:28.240 回答
1

如果您想要的只是time对整个数据集进行最小排序是没有意义的。您可以简单地使用min

agg(df, min(df$time))

或对于每种类型的游戏:

groupBy(df, df$game) %>% agg(min(df$time))
于 2015-09-15T15:48:10.750 回答
0

只是为了澄清一下,因为这是我一直遇到的问题:您遇到的错误可能是因为您还将 dplyr 导入了您的环境。如果您使用过的SparkR::first(SparkR::arrange(g, SparkR::desc(g$time)))东西可能会很好(尽管显然查询可能会更有效)。

于 2015-12-16T14:06:34.187 回答