在许多较小的数据帧中拆分一个巨大的数据帧,以在r中创建一个语料库

时间:2015-11-25 15:27:22

标签: r dataframe corpus

我需要根据搜索条件从巨大的数据框(大约170,000行,但只有两列)创建一个语料库来挖掘一些文本并按用户名分组。例如,我从这样的数据框开始:

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?

1 个答案:

答案 0 :(得分:2)

我们可以split将数据集('df1')转换为list

lst <- split(df1, df1$username)

通常,最好停在此处并在list内进行所有计算/分析。但是,如果我们想在全局环境中创建l000个对象,则在使用我们想要的对象名称命名list2env元素后,一种方法是使用list

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

DataFrame1
DataFrame2 

另一种保存数据的方法是nest

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