R — проблемы с чтением CSV-файла

Мне нужно проанализировать данные в файлах .csv, но в этих файлах есть проблема, заключающаяся в том, что вторая строка всегда содержит тире. См. пример ниже:

participant_id  participant_name    N371    N2062

--------------  ----------------    ----    -----

229182         John Kim  0   0

read.csv или fread не сможет правильно прочитать этот файл, пока я не открою эти файлы и не удалю вручную вторую строку. Тем не менее, это боль, и эти файлы будут обновляться еженедельно. Мне интересно, есть ли способ правильно прочитать эти файлы.

Спасибо.


r csv
person Z. Zhang    schedule 08.01.2016    source источник
comment
Это другая проблема stackoverflow.com/questions/28007684/, но то же решение должно работать. ХТН   -  person PereG    schedule 08.01.2016
comment
@PereG Я попытался сначала получить заголовок, но получил эту ошибку. › all.ba = fread(C:/Users/sample.csv, nrows = 1) Ошибка в fread(C:/Users/sample.csv, : встроенный nul в строку: 'ÿþp\0r\0o\0j\0e\ 0c\0t\0_\0n\0a\0m\0e\0'   -  person Z. Zhang    schedule 08.01.2016
comment
пытаясь добавить skip=1 в вашу функцию read.csv(). Что-то вроде этого может сработать: data = read.csv("C:/Users/sample.csv",header = T, skip=1)   -  person s_scolary    schedule 08.01.2016
comment
Вы также можете указать типы столбцов в colclasses, а затем просто удалить первую строку. Это позволит убедиться, что ваши столбцы читаются в нужном вам формате.   -  person Zelazny7    schedule 08.01.2016
comment
Спасибо за вашу помощь. Но все равно не работает: › all.ba = read.csv(C:/Users/sample.csv, header = T, skip = 1, + colClasses=c(character,rep(integer,3),character,rep(integer ,350))) Ошибка в read.table(file=file,header=header,sep=sep,quote=quote, : пустое начало файла Дополнительно: Предупреждающие сообщения: 1: In readLines(file, skip) : строка 1 кажется, содержит встроенный nul 2: в read.table(file = file, header = header, sep = sep, quote = quote,: строка 1 содержит встроенные нули   -  person Z. Zhang    schedule 08.01.2016


Ответы (1)


В этом конкретном случае вы можете использовать аргумент comment.char:

text <- "participant_id participant_name N371 N2062
-------------- ---------------- --- ----
  229182 'John Kim' 0 0" 

df <- read.table(text = text, header=T, comment.char = "-")

> df
  participant_id participant_name N371 N2062
1         229182         John Kim    0     0
person Zelazny7    schedule 08.01.2016
comment
Спасибо за вашу помощь. Но все еще есть ошибка: Предупреждающие сообщения: 1: В read.table (файл = файл, заголовок = заголовок, sep = sep, цитата = цитата,: строка 1 содержит встроенные нули 2: В read.table (файл = файл, заголовок = заголовок, sep = sep, quote = цитата, : строка 2 содержит встроенные нули nulls 4: В read.table(file = file, header = header, sep = sep, quote = quote, : строка 4 содержит встроенные нули... - person Z. Zhang; 08.01.2016