2016-05-06 3 views
1

фона:Возникли проблемы чтения таблицы с помощью sqldf пакета (R)

Я могу успешно тянуть определенный набор данных (как показано в коде ниже) из Интернета с помощью функции read.csv(). Однако, когда я пытаюсь использовать пакет sqldf для ускорения процесса с использованием read.csv.sql(), он производит ошибки. Я пробовал различные решения, но не могу решить эту проблему.

Я могу успешно вытащить данные и создать фрейм данных, что я хочу с read.csv(), используя следующий код:

ce_data <- read.csv("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
        fill=TRUE, header=TRUE, sep="") 

Для проверки функциональности sqldf на моей машине, я успешно протестировал read.csv.sql() чтения в данные, как 1 переменной, а не 5 желаемого, используя следующий код:

library(sqldf) 

ce_data_sql1 <- read.csv.sql("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
         sql = "select * from file") 

Для получения результата, который я получил с помощью read.csv(), но используя скорость read.csv.sql(), я попробовал этот код:

ce_data_sql2 <- read.csv.sql("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
          fill=TRUE, header=TRUE, sep="", sql = "select * from file") 

К сожалению, он произвел эту ошибку:

trying URL ' http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData ' Content type 'text/plain' length 24846571 bytes (23.7 MB) downloaded 23.7 MB

Error in sqldf(sql, envir = p, file.format = file.format, dbname = dbname, : unused argument (fill = TRUE)

Я пробовал различные методы для устранения ошибок, используя sqldf документацию и не увенчались успехом.

Вопрос:

Есть ли решение, где я могу прочитать в этой таблице с 5 переменных по желанию с применением read.csv.sql()?

ответ

1

Причина, по которой вы читаете ее как отдельную переменную, состоит в том, что вы не указали корректный разделитель исходного файла. Попробуйте следующее, где sep = "\t" для разделителями табуляции:

ce_data_sql2 <- read.csv.sql("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
sep = "\t", sql = "select * from file") 

.

Ошибка вы получаете в последнем примере:

Error in sqldf(sql, envir = p, file.format = file.format, dbname = dbname, : unused argument (fill = TRUE)

ли из-за того, что read.csv.sql не принимает fill аргумент.

+0

Большое спасибо, @eleventhend –