Я использую этот рабочий процесс для обработки большого CSV-файла в R:
library(sqldf)
csv <- "db.csv"
sqlite_file <- "db.sqlite"
table_name <- "table"
db <- src_sqlite(sqlite_file, create = TRUE)
con <- dbConnect(SQLite(), dbname = sqlite_file)
dbWriteTable(con, name=table_name, value=csv,
row.names=FALSE, header=TRUE, sep = ",", overwrite = TRUE)
Затем я создаю свои запросы, извлекаю данные и так далее, и так далее. Данные будут выглядеть так:
ID Class V1 V2 V3 ...
1 1.1 100 234 423
2 5 221 345 563
3 2.2.2 240 356 250
4 3.1 267 569 867
5 6 125 469 596
Столбец Class
в исходном файле .csv является фактором со следующими 10 уровнями:
"1.1" "1.2" "2.1" "2.2.1" "2.2.2" "3.1" "3.2" "4" "5" "6"
Однако, как только я передать файл CSV в sqlite и извлечь его обратно в R, фактор теряет два своих уровня:
"1.1" "1.2" "2.1" "2.2" "3.1" "3.2" "4" "5" "6"
Я предположил, что при передаче CSV в SQLite фактор читался как число, и я был прав. Поскольку таким образом я неправильно классифицирую некоторые данные, знаете ли вы, как можно избежать этой проблемы?
Заранее спасибо.