Конвертировать TXT-файл в CSV и извлечь выбранные строки - PullRequest
2 голосов
/ 14 сентября 2011

У меня есть 500 файлов (сохраненных в той же директории).

Все эти файлы имеют одинаковый формат, как показано ниже.Хотя Excel может распознать их с 3 столбцами, R читает только один столбец, если я использую x <- read.csv(xxx.txt, header=T).Я предполагаю, что есть более разумный способ сделать это.

4077    40770     3.083 
4078    40780     2.985 
4079    40790     2.946 
4080    40800     3.010 
4081    40810     2.956 
4082    40820     3.080 
4083    40830     3.130 
4084    40840     3.167 
4085    40850     3.054 

После загрузки всех этих файлов в R, я хочу извлечь только 0, 100, 200, 300, .... 9-ю строки и сохранить ихв другом каталоге с таким же именем файла в 500 отдельных файлах.

Можно ли сделать это автоматически с помощью R?

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Я думаю, что вы бы улучшили свой код, используя функцию read.table () для импорта файлов с бесплатными форматированными (с разделителями) вместо rad.csv (), который был написан специально для файлов с разделителями-запятыми.И, как указал DWin, в R. нет строки 0. Вы можете попробовать это следующим образом:

directory <- "your.work.directoty" # where your data files are. 
                                   # It depends on your OS (Windows, Linux, MacOS)
ndirectory <- "your.new.directory"
files <- dir(directory)
files.to.read <- paste(directory, files, sep="/") 
files.to.write <- paste(ndirectory, files, sep="/")

for(i in 1:length(files.to.read) )
{
    d <- read.table(files.to.read[i], header=TRUE)
    temp <- d[c(1,seq(100, 9000, by=100)), ]
    write.table(temp, file=files.to.write[i], 
                row.names=FALSE)
}

Надеюсь, эта помощь.

1 голос
/ 14 сентября 2011

Загрузка:

  1. Создать список с их именами проще всего с помощью> list.files ( )

  2. Перебрать этот список, используя read.table, либо без sep аргумент или sep = "\ t" (без запятых или заголовка в этом файле, как сейчас.)

  3. Возможно: lapply (flist, function (x) assign (x, read.table (x)) ... и связать их вместе, возможно, с чем-то вроде bigfile <- do.call (rbind, flist) </p>

    Есть много примеров в архиве rhelp и на SO, как это сделать;

Цикл загрузки файлов R

С помощью R обведите кадры данных и назначьте соответствующие имена объектам, созданным в цикле

Как прочитать.table () несколько файлов в одну таблицу в R?

Извлечение (в R нет нулевой строки):

subextract <- bigfile[ seq(1, 9001 , by=100), ]
write.csv(subextract, file="smaller.csv")   # will have commas
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...