Выбрав каждый 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: исправление.