Переименование столбцов динамически R - PullRequest
0 голосов
/ 06 июня 2018

Я новичок в R (программист SAS) и хочу выйти из менталитета "цикла".

Скажем, у меня есть следующие столбцы в data.frame:

1999, 1999_1, 1999_2, 2000, 2000_1, 2001_2, 2002, 2000_1, etc 

я пытаюсь написать функцию, которая перебирает и переименовывает их следующим образом:

1999_A, 1999_B, 1999_C, 2000_A, etc

Есть идеи, как сделать это без цикла?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Вот подход.

library("gsubfn")
x<-c("1999","1999_1","1999_2","2000","2000_1","2000_2")
x<-paste(x,"_",sep="")
x
[1] "1999_"   "1999_1_" "1999_2_" "2000_"   "2000_1_" "2000_2_"

find_replace<-list("_" = "_A", "_1_" = "_B", "_2_" = "_C")
gsubfn(paste(names(find_replace),collapse="|"),find_replace,x)

[1] "1999_A" "1999_B" "1999_C" "2000_A" "2000_B" "2000_C"

В вашем случае x = colnames(df).

0 голосов
/ 06 июня 2018

Посмотрите на функцию вставки.Вы захотите сначала снять подчеркивание с каждого имени столбца, выбрав первые четыре символа имени каждого столбца.Затем вам нужно вставить «_A» в 1-й, 4-й, 7-й, ... столбец.Затем вставьте "_B" во 2-й, 5-й, 8-й, ... столбец.Затем вставьте "_C" в 3-й, 6-й, 9-й, ... столбец.Вы можете выбрать, какие столбцы вы хотите, используя индексы, и вы можете установить его, чтобы начать со значения и иметь отставание 3.

colnames(dataframe) <- paste(colnames(dataframe)[indices],"text here")
...