Выбрав каждый N-й столбец в SQLDF или read.csv.sql

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

Я хочу взять CSV-файл и прочитать выбранные столбцы в r, в частности, каждый 9-й и 10-й столбец. В R что-то вроде:

read.csv.sql("myfile.csv", sql(select * from file [EVERY 9th and 10th COLUMN])

Мой интернет-трал предполагает, что выбор каждой n-й строки может быть сделан с помощью оператора SQL с использованием MOD что-то вроде этого (пожалуйста, исправьте меня, если я ошибаюсь):

"SELECT *
        FROM   file
        WHERE  (ROWID,0) IN (SELECT ROWID, MOD(ROWNUM,9) OR MOD(ROWNUM,10)"

Есть ли способ сделать эту работу для столбцов? Заранее спасибо.

1 ответ

read.csv read.csv было бы достаточно для этого:

# determine number of columns
DF1 <- read.csv(myfile, nrows = 1)
nc <- ncol(DF1)

# create a list nc long where unwanted columns are NULL and wanted are NA
colClasses <- rep(rep(list("NULL", NA), c(8, 2)), length = nc)

# read in
DF <- read.csv(myfile, colClasses = colClasses)

sqldf Для использования sqldf замените последнюю строку на эти:

nms <- names(DF1)
vars <- toString(nms[is.na(colClasses)])
DF <- fn$read.csv.sql(myfile, "select $vars from file")

ОБНОВЛЕНИЕ: переключено на read.csv.sql

ОБНОВЛЕНИЕ 2: исправление.

Другие вопросы по тегам