Предполагая, что данные хранятся в data.frame df1
df1 <- read.table(text="Name XYZ AGE 30 Country India Mobile 1234567890
Name ABC AGE 35 Country Russia Mobile 2345678901")
Вы можете создать новый data.frame df2
, выбрав каждую секунду (четный) столбец
df2 <- df1[c(FALSE,TRUE)]
и назначать имена столбцов, используя каждую вторую запись (нечетные) в первой строке df1
:
colnames(df2) <- unlist(df1[1, c(TRUE, FALSE)])
Данные df1
могут быть удалены rm(df1)
. Это результат для df2
:
#> df2
# Name AGE Country Mobile
#1 XYZ 30 India 1234567890
#2 ABC 35 Russia 2345678901
Та же процедура может быть записана в виде однострочника. Возможно менее ясно, но, безусловно, более компактен:
df1 <- `colnames<-`(df1[c(FALSE,TRUE)], unlist(df1[1,c(TRUE,FALSE)]))
В этом случае второй data.frame df2
не нужен.
Как хранятся данные? это в текстовом файле? Как ограничены поля? –
Добро пожаловать в переполнение стека! Пожалуйста, прочитайте информацию о [как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) и как дать [воспроизводимый пример] (http://stackoverflow.com/questions/ 5963269). Это облегчит вам помощь другим людям. – zx8754