我需要分析大量的数据(~ 40 Go,300万行)。这些数据太大了,无法在电子表格或R中打开。
为了解决这个问题,我将数据加载到SQLite数据库中,然后使用R(和RSQLite包)将其拆分为可以操作的小部分(70000行),然后需要数据为data.frame格式,以便进行分析,我使用了.data.frame:
#Connecting to the database
con = dbConnect(drv=RSQLite::SQLite(),dbname="path")
#Connecting to the table
d=tbl(con, "Test")
#Filter the database and convert it
d %>%
#I filtered using dplyr
filter("reduce number of rows") %>%
as.data.frame()
它工作正常,但是执行起来需要很多时间。有人知道如何让这个更快吗(知道我的RAM有限)?
我还尝试了setDT(),但它似乎对SQLight数据不起作用。
d %>% setDT()
Error in setDT(.) :
All elements in argument 'x' to 'setDT' must be of same length, but the profile of input lengths (length:frequency) is: [2:1, 13:1]
The first entry with fewer than 13 entries is 1
谢谢
1条答案
按热度按时间rjee0c151#
要使用问题中的
con
处理70000行的连续块,请将下面的print
语句替换为所需的任何处理(base、dplyr、data.table等)。