Использование `sub` для переименования столбцов во фрейме данных - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь использовать sub для переименования столбцов в большом фрейме данных, но застрял с использованием аргументов replacement и x.У меня есть кадр данных, как показано ниже:

df <- as.data.frame(cbind(1:3, 4:6, 7:9, 10:12))
colnames(df) <- c("A_number", "A_frq", "B_number", "B_frq")

Мне нужно, чтобы имена столбцов были colnames(df) <- c("A", "frq A", "B", "frq B").В моих фактических данных есть еще много столбцов, поэтому я пытаюсь использовать шаблоны для переименования каждого столбца одновременно.

Я смог изменить A_number и B_number на A и B, используя это: colnames(df) <- sub("\\_number$", "", colnames(df)).Но я пытался изменить A_frq и B_frq после этого и попытался colnames(df) <- sub("\\_frq$", "", paste("frq ", colnames(df))), который меняет все имена столбцов на frq A или frq B.Я также подумал об использовании colnames(df) <- sub("\\_frq$", "", colnames(df)) и добавлении frq позже, но тогда все столбцы теперь A или B, и я не могу выбрать, какие из них были A_frq или B_frq.Есть ли простой способ использовать sub, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 19 декабря 2018

При замене вы также можете обратиться к части найденного значения, где «\ 1» (поэтому «\ 1» в R) означает: первая часть в скобках.

colnames(df) <- sub("(.)_frq$", "frq \\1", colnames(df))

Thisзаменит все, например «X_frq», на «frq X», а имена, которые не совпадают, останутся без изменений.

Но, как сказано в комментариях, может быть, лучше использовать имя без пробелов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...