Я работаю с большими наборами данных, и тидир spread
обычно выдает мне сообщения об ошибках, предлагающие failure to obtain memory
для выполнения операции.
Поэтому я изучаю dbplyr .Однако, как говорится здесь , а также показано ниже, dbplyr::spread()
не работает.
Мой вопрос здесь заключается в том, есть ли другой способ добиться того, что tidyr::spread
делает при работе сtbl_dbi
и tbl_sql
данные без загрузки в локальную память.
Используя примеры данных из здесь , ниже я представляю, что я получу и что я хотел бы сделать и получить.
# образец данных tbl_dbi и tbl_sql
df_sample <- tribble(~group1, ~group2, ~group3, ~identifier, ~value,
8, 24, 6, 'mt_0',
12, 18, 24, 6, 'mt_1', 4)
con <- DBI::dbConnect(RSQLite::SQLite(), "")
df_db <- copy_to(con, df_sample, 'df_sample')
# при попытке распространения tbl_dbi и tbl_sql без загрузки в локальную память
//this does not work
df_db %>% spread(identifier, value)
Error in UseMethod("spread_") :
no applicable method for 'spread_' applied to an object of class "c('tbl_dbi', 'tbl_sql', 'tbl_lazy', 'tbl')"
# при попытке распространения tbl_dbi и tbl_sql после загрузкив локальную память
//this spreads the data but the output is in memory
//I would like to keep the output as 'tbl_dbi', 'tbl_sql', and 'tbl_lazy'
df_db %<>% collect() %>% spread(identifier, value)
class(df_db)
[1] "tbl_df" "tbl" "data.frame"
Заранее благодарен за любую помощь