чтение 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)

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

5 ответов


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

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

попробуйте это:

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

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

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

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

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

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

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


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


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

пример:

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

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

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