R删除数据帧中变量名的后缀



我正试图删除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("[...]*$", "", .)))

但不起作用,我认为使用*不是使用通配符的合适方式。。。

使用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。

我实际上认为在这里使用基本R更容易:

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

最新更新