2015-05-28 1 views
2

У меня есть dataframe с большим количеством столбцов с длинными именами. Я хочу переименовать столбцы, чтобы они были более легкими в дальнейшем работать и захотели сгруппировать их по категориям.Как переименовать столбцы R-кадра данных на основе существующего шаблона?

Таким образом, если имена столбцов, как Subject1.ABCD123.Type1, Subject2ABCD123.Type1, ABCSubject1.ABCD123.Type2, XYZ.Subject3ABCD123.Type2 и т.д.

Я хочу, чтобы изменить их в нечто вроде Subject1_Type1, Subject2_Type1, Subject1_Type2, Subject3_Type2 etc.

Как я могу сделать это в R?

ответ

5

Вы можете использовать sub:

colnames(yourdf) <- sub(".*(Subject\\d+).*(Type\\d+).*", "\\1_\\2", colnames(yourdf)) 

Здесь у вас есть 2 модели, которые интересны для вас: один, начиная от «Тема» с последующим числом, и один, начиная от «Type» и последующим числом. Каждый из них помещается между скобками в выражении regex (параметр pattern функции sub), поэтому мы можем получить их (с \\1 и \\2) и использовать их в параметре replacement, чтобы иметь нужное имя.

Пример:

sub(".*(Subject\\d+).*(Type\\d+).*", "\\1_\\2", c("Subject1.ABCD123.Type1", "Subject2ABCD123.Type1", "ABCSubject1.ABCD123.Type2", "XYZ.Subject3ABCD123.Type2")) 
#[1] "Subject1_Type1" "Subject2_Type1" "Subject1_Type2" "Subject3_Type2" 
+0

Great это работает для меня :). – sfactor