我正在尝试使用r对sqlite数据库中存储的远程磁盘数据进行操作。以下是我的步骤:
首先,我将flights
数据集复制到我的空测试数据库:
library(nycflights13)
library(dplyr)
test_db <- src_sqlite("E:/Sqlite/test_db")
copy_to(test_db, flights, temporary = FALSE)
然后,我清除了r内存并尝试从测试数据库中提取
flights
:library(dplyr)
test_db <- src_sqlite("E:/Sqlite/test_db")
flights <- tbl(test_db, "flights")
flights_df <- data.frame(select(flights, year, month, day, dep_time, tailnum))
弹出警告
Only first 100,000 results retrieved. Use n = -1 to retrieve all.
不知道如何对包含300000行以上的整个航班数据进行数据帧处理。
实际上是个附带问题:
是否可以直接在数据库中的远程磁盘数据上使用r进行高级数据操作(重塑,长数据到宽数据,宽数据到长数据),而不是在r中调用/数据分帧它们,这通常会导致内存问题?
最佳答案
如果您的目标是将数据带回到r数据帧中,则可以使用dplyr::collect()
。
flights_df2 <- flights %>%
select(year, month, day, dep_time, tailnum) %>%
collect()