繁体   English   中英

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

[英]R remove suffix from variable names in data frame

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM