2015-11-25 12 views
1

我需要从一个巨大的数据帧(约170.000行,但只有两列)根据该搜索挖掘户名一些文本和组创建语料库条款。例如,我从这样的数据帧开始:斯普利特的许多小dataframes一个巨大的数据帧,以创建为r的语料库

username search_term 
name_1  "some_text_1" 
name_1  "some_text_2" 
name_2  "some_text_3" 
name_2  "some_text_4" 
name_3  "some_text_5" 
name_3  "some_text_6" 
name_3  "some_text_1" 

[...] 

name_n  "some_text_n-1" 

我想获得:

data frame 1 
username search_term 
name_1  "some_text_1" 
name_1  "some_text_2" 

data frame 2 
username search_term 
name_2  "some_text_3" 
name_2  "some_text_4" 

等等..

任何想法?我认为一个for循环,但实在是太慢了,因为我需要创造约11000数据帧...

要了解如何将一个列表转换成文集见:How transform a list into a corpus in r?

回答

2

我们可以split的数据集(“DF1”)为list

lst <- split(df1, df1$username) 

通常情况下,最好是停在这里,做所有的计算/在list本身的分析。但是,如果我们要创建的对象的L000在全球环境中,一种方法是命名list元素与我们所希望的对象名称后使用list2env

list2env(setNames(lst, paste0('DataFrame', 
       seq_along(lst)), envir=.GlobalEnv) 

DataFrame1 
DataFrame2 

保持数据的另一种方法是将nest

library(dplyr) 
library(tidyr) 
df1 %>% 
    nest(-username) 
+0

酷!谢谢..你知道是否有办法将这个列表转换成语料库? – woodstock

+1

@woodstock你可以请发表,作为一个单独的问题? – akrun

+0

喜akrun ..我应该问的问题,无论如何,即使我已经找到解决方案? – woodstock