2014-03-31 2 views
6

У меня есть файл csv с дополнительными пробелами, которые я хочу прочитать в R в качестве блока данных, зачищая пробелы.R fread и strip white

Это может быть достигнуто путем использования

testdata<-read.csv("file.csv", strip.white=TRUE) 

Проблема состоит в том, что набор данных большой и занимает около получаса. Функция fread работает как минимум в два раза быстрее, но не имеет функции strip.white.

library("data.table") 
testdata<-data.frame(fread("file.csv")) 

Есть быстрый способ лишить пробела из колонок после считывания, или есть какой-то способ, чтобы лишить белые пространства с помощью Fread?

Если бы это был только один раз импорт, я бы не прочь так много, но мне нужно делать это несколько раз и регулярно.

+0

Существует параметр 'strip.white', который по умолчанию устанавливается в TRUE' в fread, и вы также можете передать' data.table = FALSE' в fread для получения 'data.frame' после прочтения набор данных –

ответ

3

Там есть параметр strip.white, который установлен по умолчанию TRUE в fread прямо сейчас, и вы также можете пройти data.table = FALSE до fread, чтобы получить data.frame после прочтения данных t

+1

Спасибо, функция fread была обновлена ​​с тех пор, как я впервые столкнулся с этой проблемой, так что теперь это путь. – DaReal

2

Вы можете использовать str_trim из stringr пакета:

library(stringr) 
testdata[,sapply(.SD,str_trim)] 

По умолчанию он урезает whitesapces в обе стороны, но вы можете установить сторона:

testdata[,sapply(.SD,str_trim,side="left")] 
+0

Спасибо, это было бы трюком. Однако у моего коллеги есть решение за пределами Р. Он использовал команду PERL на своей локальной машине Mac OSX для разметки прокладки: perl -lape 's/\ s + // sg' /path/to/file.csv>/path /to/fileV2.csv Это уменьшает размер файла и блокирует пробелы перед его чтением в R. – DaReal

+0

Просто предостережение: использование решения @ agstudy позволит преобразовывать числовые столбцы в chr, если они также содержат пробелы. В противном случае, хорошее решение. – fridaymeetssunday