Назначать заголовки на основе существующей строки в dataframe в R
После преобразования фрейма данных я хотел бы назначить заголовки/имена столбцам на основе существующей строки.
Мои заголовки в настоящее время:
row.names X2 X3 X4 X5 X6 X7 X8 X9 ...
Я хотел бы избавиться от этого и использовать следующую строку в качестве заголовков столбцов (без необходимости их печатать, поскольку у меня их много).
Единственное решение, которое у меня есть для этого - экспортировать и повторно загрузить данные (с заголовком = T).
Ответы
Ответ 1
Попробуйте следующее:
colnames(DF) = DF[1, ] # the first row will be the header
DF = DF[-1, ] # removing the first row.
Однако посмотрите, правильно ли они были прочитаны. Если data.frame имеет числовые переменные, но первая строка была символом, все данные были прочитаны как символ. Чтобы избежать этой проблемы, лучше сохранить данные и прочитать снова с заголовком = ИСТИНА, как вы предлагаете.
Ответ 2
Ключ здесь состоит в том, чтобы сначала заблокировать строку.
colnames(DF) <- as.character(unlist(DF[1,]))
DF = DF[-1, ]
Ответ 3
Очень похоже на ответ Вишну, но использует привязку для сопоставления всех данных с символами, а затем для назначения их в качестве заголовков. Это действительно полезно, если ваши данные импортируются как факторы.
DF[] <- lapply(DF, as.character)
colnames(DF) <- DF[1, ]
DF <- DF[-1 ,]
обратите внимание, что если у вас много числовых данных или факторов, которые вы хотите, вам нужно будет их вернуть. В этом случае имеет смысл хранить кадр символьных данных, извлекать нужную строку и затем применять ее к исходному фрейму данных
tempDF <- DF
tempDF[] <- lapply(DF, as.character)
colnames(DF) <- tempDF[1, ]
DF <- DF[-1 ,]
tempDF <- NULL