У меня большой файл (> 6 ГБ) с 5 миллионами + строками и 329 столбцами.
Необходимо получить полные записи для 23 тыс. Строк для фиксированного списка поставщиков медицинских услуг (HCPlist $ NPI). Попытка поднабора или фильтрации по частям во время чтения, так как размер файла перегружает 14 ГБ ОЗУ.
Изначально возникли проблемы из-за типа данных, поэтому я уже преобразовал HCPlist $ NPI в целое число для соответствия типу данных в исходном файле.
Попробовал следующее, и оба работали гладко, но получили 0 строк и 329 столбцов (т.е. без записей)
f <- function(x, pos) filter(x, x[,1] %in% HCPlist$NPI)
NPPESinfo_list <- read_csv_chunked("npidata_pfile_20050523-20190210.csv",
DataFrameCallback$new(f), chunk_size = 10000)
Также пробовал subset
вместо filter
, а также следующее ... также все прошло гладко, но на выходе было 0 строк и 329 столбцов (т.е. опять нет записей)
# Filter NPPES Data for NPIs
f <- function(x, pos) x[(is.element(x[,1], HCPlist$NPI)),]
NPPESinfo_list <- read_csv_chunked("npidata_pfile_20050523-20190210.csv",
DataFrameCallback$new(f), chunk_size = 10000)
В прошлом я выполнял похожий код, отфильтровывая специальные специальные коды, и он работал нормально. Например ...
# Filter NPPES Data for Specialty (Medical Oncologists = "207RX0202X")
f2 <- function(x, pos) subset(x,
x[,48] == "207RX0202X" |
x[,52] == "207RX0202X" )
NPIs_MedOnc <- read_csv_chunked("npidata_pfile_20050523-20190210.csv",
DataFrameCallback$new(f2), chunk_size = 10000)
Когда я запускаю тот же фильтр выше только для первых 2000 строк файла, он работает нормально.
# Test run on first 2000 rows
df <- read.csv(file="npidata_pfile_20050523-20190210.csv",nrows=2000)
df2 <- filter(df, df[,1] %in% HCPlist$NPI)
Я получаю хороший фрейм данных с 48 строками и 329 столбцами.
Не уверен, почему filter
с %in%
отлично работает только на первых 2000 строках и дает мне 48 записей. Однако когда часть функции и применяется к read.csv.chunked
, это не дает мне записей?
Здесь можно воспользоваться некоторой помощью, поскольку я не нашел подобного случая / вопроса в других местах в Stackoverflow или Google.
Кажется, что части работают нормально, но когда я собираю то, что хочу, я не получаю нужные записи.
Заранее спасибо !!!