Может ли кто-нибудь сказать мне, как читать только первые 6 месяцев (7 столбцов) для каждого года данных ниже, например, используя read.table()
?
Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2009 -41 -27 -25 -31 -31 -39 -25 -15 -30 -27 -21 -25
2010 -41 -27 -25 -31 -31 -39 -25 -15 -30 -27 -21 -25
2011 -21 -27 -2 -6 -10 -32 -13 -12 -27 -30 -38 -29
NULL
классе столбцов .Ответы:
Скажем, данные находятся в файле
data.txt
, вы можете использоватьcolClasses
аргумент,read.table()
чтобы пропустить столбцы. Здесь данные в первых 7 столбцах,"integer"
и мы устанавливаем оставшиеся 6 столбцов, чтобы"NULL"
указать, что они должны быть пропущены.Измените
"integer"
на один из допустимых типов, как подробно описано, в?read.table
зависимости от реального типа данных.data.txt
выглядит так:и был создан с использованием
где
dat
находитсяЕсли количество столбцов заранее не известно, служебная функция
count.fields
прочитает файл и подсчитает количество полей в каждой строке.источник
nrows
. Затем определите, сколько столбцов используетсяncol()
, или, иначе, вы хотите определить количество столбцов для чтения / игнорирования. Затем прочитайте полный файл, используя эту информацию.count.fields()
что автоматизирует процесс, который я предложил в комментариях.count.fields()
текстовое соединение, поэтому прочитайте некоторое подмножество строк, используяtxt <- readLines(....)
, затем создайте соединение с прочитанными в строкахcon <- textConnection(txt)
, затем сделайтеcount.fields(txt)
. Обязательно используйтеskip
in,count.fields()
чтобы пропустить строку заголовка, если она есть; вы не можете пропустить строки в файле, используяreadLines()
.Чтобы прочитать определенный набор столбцов из набора данных, есть несколько других вариантов:
1) С
fread
изdata.table
пакета:Вы можете указать желаемые столбцы с
select
параметром изfread
изdata.table
пакета. Вы можете указать столбцы с вектором имен столбцов или номеров столбцов.Для примера набора данных:
В качестве альтернативы вы можете использовать
drop
параметр, чтобы указать, какие столбцы не следует читать:Все результаты в:
ОБНОВЛЕНИЕ: если вы не хотите
fread
возвращать таблицу данных , используйте параметрdata.table = FALSE
-параметр, например:fread("data.txt", select = c(1:7), data.table = FALSE)
2)
read.csv.sql
Изsqldf
пакета:Другой альтернативой является
read.csv.sql
функция изsqldf
пакета:3) С помощью
read_*
-функций изreadr
-пакета:Из документации объяснение используемых символов с
col_types
:источник
fread
однако не поддерживает сжатые файлы. Большие файлы обычно сжимаются.fread
. Стоит отметить, чтоfread
очень вероятно, что несжатый файлread.table
будет читать значительно быстрее, чем сжатый файл. См. Здесь пример .read.table
вас не спасет. В этом случае вы можете посмотретьff
файл -package.fread
для чтения больших сжатых файлов , как это:fread("gunzip -c data.txt.gz", drop = c(8:13))
.Для этого вы также можете использовать JDBC. Создадим образец файла csv.
Загрузите и сохраните драйвер JDBC CSV по этой ссылке: http://sourceforge.net/projects/csvjdbc/files/latest/download
источник
Вы делаете это так:
источник