Переименуйте суффикс части имени столбца, но оставьте то же самое
Сейчас я повторяю слияние, потому что я плохо назвал столбцы, однако я хотел бы знать, как сопоставить суффикс имени столбца и переименовать эту часть столбца, оставив остальное таким же.
Например, если у меня есть data.frame (тоже может быть data.table, не имеет значения - я мог бы преобразовать его):
d <- data.frame("ID" = c(1, 2, 3),
"Attribute1.prev" = c("A", "B", "C"),
"Attribute1.cur" = c("D", "E", "F"))
Теперь представьте, что есть сотни столбцов, похожих на столбцы 2 и 3 из моего образца DT. Как бы я пройти и обнаружить все столбцы, заканчивающиеся на ".prev"
изменить на ".1"
и все столбцы, заканчивающиеся на ".cur"
изменить на ".2"
?
Итак, имена новых столбцов будут такими: ID
(Без изменений), Attribute1.1
, Attribute1.2
и так далее для столько столбцов, которые совпадают.
3 ответа
С базой R мы можем сделать
names(d) <- sub("\\.prev", ".1", sub("\\.cur", ".2", names(d)))
d
# ID Attribute1.1 Attribute1.2
# 1 1 A D
# 2 2 B E
# 3 3 C F
С stringr
пакет, который вы также можете использовать
names(d) <- str_replace_all(names(d), c("\\.prev" = ".1", "\\.cur" = ".2"))
Если вместо Attribute1
а также Attribute2
у вас могут быть некоторые имена с точками / пробелами, вы также можете заменить "\\.prev"
а также "\\.cur"
шаблоны для "\\.prev$"
а также "\\.cur$"
чтобы убедиться, что мы сопоставляем их в конце имен столбцов.
Вот идея использования dplyr
& stringr
синтаксис
library(dplyr); library(stringr)
names(d) <-
d %>% names() %>%
str_replace(".prev", ".1") %>%
str_replace(".cur", ".2")
Ура!
Вот вариант с gsubfn
library(gsubfn)
names(d) <- gsubfn("(\\w+)", list(prev = 1, cur = 2), names(d))
names(d)
#[1] "ID" "Attribute1.1" "Attribute1.2"