Подтвердить что ты не робот

Чтение файла csv с повторными именами строк в R

Я пытаюсь прочитать файл csv с повторяющимися именами строк, но не смог. Сообщение об ошибке, которое я получаю, это Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate 'row.names' are not allowed.

Используемый мной код:

S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"))

Ниже приведен пример моих данных:

did <- c("1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657")
aid <- c(101,102,103,104,105,106,107,108,109,110)
temp <- c(36,38,37,39,35,37,36,34,39,38)

data <- cbind(did,aid,temp)

Любая помощь будет оценена.

4b9b3361

Ответ 1

функция видит повторяющиеся имена строк, поэтому вам нужно иметь дело с этим. Вероятно, самый простой способ - это row.names = NULL, который заставит нумерацию строк, другими словами, он обрабатывает ваш первый столбец как первое измерение, а не как номера строк, и поэтому добавляет строку числа (последовательные целые числа, начинающиеся с "1".

read.csv("S1N657.csv", header=T,fill=T, col.names=c("dam","anim","temp"), row.names=NULL)

Ответ 2

попробуйте следующее:

S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"), 
          row.names = NULL)[,-1]

Ответ 3

В последнее время проблема заключалась в том, что количество столбцов в строке заголовка не соответствовало количеству столбцов, которые у меня были в самих данных. Например, мои данные были разделены табуляцией, и все строки данных имели обратный символ табуляции. В строке заголовка (которую я добавил вручную) не было.

Я хотел, чтобы строки были автоматически пронумерованы, но вместо этого он смотрел на мою первую строку в виде имени строки. Из документов (выделено мной мной):

row.names - вектор имен строк. Это может быть вектор, дающий фактические имена строк или один номер, указывающий столбец таблицы, который содержит имена строк, или символьную строку, указывающую имя столбца таблицы, содержащего имена строк.

Если есть заголовок, а первая строка содержит меньшее поле, чем число столбцов, первый столбец ввода используется для имен строк. В противном случае, если row.names отсутствует, строки пронумерованы.

Использование row.names = NULL принудительно назначает нумерацию строк. Отсутствующие или NULL row.names генерируют имена строк, которые считаются "автоматическими (и не сохраняются as.matrix).

Добавление дополнительного символа табуляции в строку заголовка, в которой строка заголовка имеет такое же количество столбцов, что и строки данных, тем самым решая проблему.

Ответ 4

Угадай, что ваш файл csv был преобразован из xlsx. Добавьте запятую в конец первой строки, удалите последнюю строку, сделанную

Ответ 5

Короче говоря, проверьте имена столбцов. Если ваша первая строка - это имена столбцов, возможно, вам не хватает одного или нескольких имен.

Пример:

"a","b","c"
a,b,c,d
a,b,c,d

Приведенный выше пример вызовет ошибку row.name, поскольку каждая строка имеет 4 значения, но только 3 столбца.

Это случилось со мной, когда я строил csv из онлайн-ресурсов.

Ответ 6

в моем случае проблема возникла из файла Excel. Хотя он казался идеально организованным, он не работал, и у меня всегда было сообщение: Error in read.table(file = file, header = header, sep = sep, quote = quote,: duplicate 'row.names' are not allowed.

Я попытался скопировать и вставить мою матрицу Excel в новый пустой лист Excel, и я попытался прочитать ее: это сработало! Нет сообщений об ошибках больше!

Ответ 7

Я получал ту же ошибку "дубликаты строк и имевшие имена не разрешены" для небольшого CSV. Проблема заключалась в том, что где-то за пределами области графика 14х14, которую я хотел, была случайная ячейка с пробелом/другими данными.

Обнаружил ответ, когда я запустил его "row.names = NULL", и под моей таблицей было несколько строк пустых данных (и, следовательно, несколько повторяющихся имен строк все "пусто").

Решением было удалить все строки/столбцы за пределами области таблицы, и это сработало!