Читать CSV в R и фильтровать столбцы по имени - PullRequest
0 голосов
/ 10 февраля 2019

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

Я хочу что-то вроде usecols из панд 'read_csv.

Загрузка всего и выбор потом не является решением (файл очень большой, он не помещается в памяти).

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

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

Я буду использовать встроенный набор данных iris, чтобы сделать пример воспроизводимым, сначала сохранив его на диск.

write.csv(iris, "iris.csv", row.names = FALSE)

Теперь проблема.
Аргумент row.names похож нав инструкции write.csv.
Обратите внимание на пробелы вокруг Sepal.Length.Это связано с символом точки в имени столбца.

library(sqldf)

sql <- "select `Sepal.Length`, Species from file"
sub_iris <- read.csv.sql("iris.csv", sql = sql, row.names = FALSE)

head(sub_iris)
#  Sepal.Length  Species
#1          5.1 "setosa"
#2          4.9 "setosa"
#3          4.7 "setosa"
#4          4.6 "setosa"
#5          5.0 "setosa"
#6          5.4 "setosa"

И окончательная очистка.

unlink("iris.csv")
0 голосов
/ 10 февраля 2019

Я буду использовать пакет data.table, а затем с помощью fread() укажите столбцы для сохранения / отбрасывания аргументами select или drop.Из ?fread

выберите Вектор имен столбцов или номеров для сохранения, отбросьте остальные.

drop Вектор имен столбцов или номеров для удаления, оставьте остальные.

Лучший!

...