Загрузка csv в R с `sep=,` в качестве первой строки

Программа, из которой я экспортирую свои данные (PowerBI), сохраняет данные в виде файла .csv, но первая строка файла — sep=,, а вторая строка файла имеет заголовок (имена столбцов).

Пример поддельного файла .csv:

sep=,
Initiative,Actual to Estimate (revised),Hours Logged,Revised Estimate,InitiativeType,Client
FakeInitiative1 ,35 %,320.08,911,Platform,FakeClient1
FakeInitiative2,40 %,161.50,400,Platform,FakeClient2

Я использую эту команду для чтения файла:

initData <- read.csv("initData.csv",
                   row.names=NULL,
                   header=T,
                   stringsAsFactors = F)

но я продолжаю получать сообщение об ошибке из-за неправильного количества столбцов (потому что он думает, что первая строка сообщает ему количество столбцов).

Если вместо этого я делаю header=F, то он загружается, но затем, когда я делаю names(initData) <- initData[2,], в именах есть пробелы и недопустимые символы, и это ломает остальную часть моей программы. Противный.

Кто-нибудь знает, как сказать R игнорировать эту первую строку? Я могу зайти в файл .csv в текстовом редакторе и просто удалить первую строку вручную, прежде чем загружать ее каждый раз (если я это сделаю, все работает нормально), но мне нужно экспортировать кучу файлов, и это немного глупо и утомительно.

Любая помощь приветствуется.


person seth127    schedule 22.06.2016    source источник
comment
попробуйте skip=1 (дополнительный аргумент для read.csv) - это пропустит первую строку   -  person lebatsnok    schedule 23.06.2016
comment
он не думает, что первая строка сообщает ему количество столбцов - он просто ожидает, что все строки будут иметь одинаковое количество столбцов.   -  person lebatsnok    schedule 23.06.2016
comment
См. data.table::fread, он пытается прочитать данные, как это предусмотрено по умолчанию.   -  person zx8754    schedule 23.06.2016


Ответы (2)


Есть много способов сделать это. Вот один:

all_content = readLines("initData.csv")
skip_first_line = all_content[-1]
initData <- read.csv(textConnection(skip_first_line),
                   row.names=NULL,
                   header=T,
                   stringsAsFactors = F)
person Eduardo Barbaro    schedule 23.06.2016
comment
Превосходно. Мне кажется, что я мог бы также создать команду if, чтобы проверить, что первая строка действительно sep=,, прежде чем пропустить ее. Спасибо. - person seth127; 24.06.2016

Ваш файл может быть в кодировке UTF-16. См. ответ hrbrmstr в том, как читать файл UTF-16:

person N.Zinc    schedule 05.03.2019