我对 R 比较陌生,所以这可能是一个简单的问题。我尝试广泛搜索答案,但找不到。

我有一个数据框的形式:

firstword  nextword   freq
a          little     23
a          great      46
a          few        32
a          good       15
about      the        57
about      how        34
about      a          48
about      it         27
by         the        36
by         his        52
by         an         12
by         my         16

这只是我的数据集中的一个小样本。我的数据框超过一百万行。 firstword 和 nextword 是字符类型。每个 firstword 可以有许多与之关联的 nextword,而有些可能只有一个。

如何从中生成另一个数据帧,以便按 desc 排序。每个“第一个词”的频率顺序,最多只包含前 6 个下一个词。

我尝试了以下代码。
small = ddply(df, "firstword", summarise, nextword=nextword[order(freq,decreasing=T)[1:6]])

这适用于较小的数据子集,但是当我在整个数据上运行它时内存不足。

最佳答案

为此目的创建了 dplyr 包来处理大型数据集。试试这个

library(dplyr)

df %>% group_by(firstword) %>% arrange(desc(Freq)) %>% top_n(6)

关于r - 从 R 中的 data.frame 中获取大数据集的前 N ​​个排序元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29842454/

10-11 17:59