R удалить суффикс из имен переменных в кадре данных - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь удалить суффикс к именам переменных фрейма данных в R для агрегирования этих столбцов.

Я импортировал лист Excel в фрейм данных в R, но имена столбцов были импортированы вот так

var1...9   var2...10   var1...11   var2...12   var3.name...13
      12           7           5          10                6
       3           9          20           7               13

Мне нужно удалить последнюю часть (из ...), чтобы агрегировать столбцы по имени.

var1   var2   var3.name
  17     17           6
  23     16          13

Для этого я использую dplyr

library(dplyr)
x %>% 
  rename_at(.vars = vars(ends_with("...*")),
            .funs = funs(sub("[...]*$", "", .)))

, но не работает, я думаю, использование * не является подходящим способом использовать подстановочный знак ...

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

С rename_at мы можем использовать matches вместо ends_with, поскольку ends_with буквально делает фиксированное совпадение символов, то есть . и * вместо 3 точек, за которыми следуют цифры.

library(dplyr)
library(stringr)
x %>%
    rename_at(vars(matches('\\.{3}\\d+$')), ~ str_remove(., "\\.{3}\\d+$"))

ПРИМЕЧАНИЕ. Когда мы делаем это, он также возвращает data.frame / tibble с дублирующимися именами столбцов (не рекомендуется) на основе входного примера.

1 голос
/ 14 апреля 2020

Я действительно думаю, что использовать базу R здесь проще:

names(x) <- sub("\\.{3}\\d*$", "", names(x))
...