我对R来说比较新,所以这可能是一个简单的问题。我试图广泛搜索答案,但无法找到答案。从R中的data.frame获取大型数据集中排名前N的元素
我有形式的数据帧:
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
这仅仅是从我的数据集图示一个微小的样品。我的数据帧超过一百万行。第一个字符和nextword是字符类型。每个第一首可以有许多与它相关的nextwords,而有些可能只有一个。
如何从中生成另一个数据框,以便按照desc排序。每个'firstword'的freq顺序,最多只包含前6个nextwords。
我试过下面的代码。
small = ddply(df, "firstword", summarise, nextword=nextword[order(freq,decreasing=T)[1:6]])
这工作对我的数据的较小的子集,但内存用完时,我在我的整个数据运行它。
工作太棒了!不会想到它。谢谢 –
正如David的回答指出的那样,在'group_by'之前执行'arrange'可能会更快。 (上面的joran的编辑把这个Q&A放在了我的stackoverflow feed中,呃,只是注意到它有多大。) – Frank