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

Назначать заголовки на основе существующей строки в dataframe в R

После преобразования фрейма данных я хотел бы назначить заголовки/имена столбцам на основе существующей строки. Мои заголовки в настоящее время:

row.names   X2  X3  X4  X5  X6  X7  X8  X9  ...

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

Единственное решение, которое у меня есть для этого - экспортировать и повторно загрузить данные (с заголовком = T).

4b9b3361

Ответ 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