在 SparkR 中对 DataFrame 中的特定列进行排序
To sort a specific column in a DataFrame in SparkR
在 SparkR 中我有一个 DataFrame data
。它包含 time
、game
和 id
。
head(data)
然后给出ID = 1 4 1 1 215 985 ..., game
= 1 5 1 10 and time 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 中 运行。它说 "object of type S4 is not subsettable".
游戏 1 已经玩过 2012-01-02、2013-05-04、2011-01-04,...我想找到最短时间。
通过输入
arrange(game, game$time)
我对所有 time
进行了排序。通过使用 first
函数,我得到了第一个条目。如果我想要最后一个条目,我只需输入这个
first(arrange(game, desc(game$time)))
如果您只想要一个最小值,time
对整个数据集进行排序是没有意义的。您可以简单地使用 min
:
agg(df, min(df$time))
或每种类型的游戏:
groupBy(df, df$game) %>% agg(min(df$time))
只是为了澄清,因为这是我一直 运行 的事情:您遇到的错误可能是因为您还将 dplyr 导入了您的环境。如果您使用 SparkR::first(SparkR::arrange(g, SparkR::desc(g$time)))
,事情可能会很好(尽管显然查询可能会更有效率)。
在 SparkR 中我有一个 DataFrame data
。它包含 time
、game
和 id
。
head(data)
然后给出ID = 1 4 1 1 215 985 ..., game
= 1 5 1 10 and time 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 中 运行。它说 "object of type S4 is not subsettable".
游戏 1 已经玩过 2012-01-02、2013-05-04、2011-01-04,...我想找到最短时间。
通过输入
arrange(game, game$time)
我对所有 time
进行了排序。通过使用 first
函数,我得到了第一个条目。如果我想要最后一个条目,我只需输入这个
first(arrange(game, desc(game$time)))
如果您只想要一个最小值,time
对整个数据集进行排序是没有意义的。您可以简单地使用 min
:
agg(df, min(df$time))
或每种类型的游戏:
groupBy(df, df$game) %>% agg(min(df$time))
只是为了澄清,因为这是我一直 运行 的事情:您遇到的错误可能是因为您还将 dplyr 导入了您的环境。如果您使用 SparkR::first(SparkR::arrange(g, SparkR::desc(g$time)))
,事情可能会很好(尽管显然查询可能会更有效率)。