R从数据框中的变量名中删除后缀
R remove suffix from variable names in data frame
我正在尝试删除 R 中数据框变量名称的后缀以聚合这些列。
我已经将 excel sheet 导入到 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("[...]*$", "", .)))
但不起作用,我认为使用 * 不是使用通配符的合适方式...
我实际上认为在这里使用 base 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+$"))
注意:当我们执行此操作时,它还会 returns 一个数据。frame/tibble 具有基于输入示例的重复列名(不推荐)。
我正在尝试删除 R 中数据框变量名称的后缀以聚合这些列。
我已经将 excel sheet 导入到 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("[...]*$", "", .)))
但不起作用,我认为使用 * 不是使用通配符的合适方式...
我实际上认为在这里使用 base 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+$"))
注意:当我们执行此操作时,它还会 returns 一个数据。frame/tibble 具有基于输入示例的重复列名(不推荐)。