背景:
问题: 我希望能够从所有这 200 个相同的变量标签中删除文本,只留下末尾的唯一单词。
我现在在哪里:
我能够在这里找到所有 200 个感兴趣的变量名称,因为它们都包含“RANK”,如下所示:
colnames(
look_for_and_select(data,
"RANK",labels=FALSE,
values=FALSE,
ignore.case=FALSE),
)
我在搜索中找到的所有内容都是替换或添加新变量标签的函数,但我需要能够保留标签中已有的唯一文本。我想也许有一种方法可以使用 gsub()...但我会感激任何想法或帮助!
library(tidyverse)
创建一个数据框,其变量名称与您的描述类似。
same <- "long_variable_name_part_that_is_always_the_same"
var_names <- paste(same, "var", 1:10, sep = "_")
df <-
var_names |>
lapply(\(x) tibble(a = 1:10) |> set_names(x)) |>
bind_cols()
df
#> # A tibble: 10 × 10
#> long_variable_name_part_that_…¹ long_variable_name_p…² long_variable_name_p…³
#> <int> <int> <int>
#> 1 1 1 1
#> 2 2 2 2
#> 3 3 3 3
#> 4 4 4 4
#> 5 5 5 5
#> 6 6 6 6
#> 7 7 7 7
#> 8 8 8 8
#> 9 9 9 9
#> 10 10 10 10
#> # ℹ abbreviated names: ¹long_variable_name_part_that_is_always_the_same_var_1,
#> # ²long_variable_name_part_that_is_always_the_same_var_2,
#> # ³long_variable_name_part_that_is_always_the_same_var_3
#> # ℹ 7 more variables:
#> # long_variable_name_part_that_is_always_the_same_var_4 <int>,
#> # long_variable_name_part_that_is_always_the_same_var_5 <int>,
#> # long_variable_name_part_that_is_always_the_same_var_6 <int>, …
我们可以使用
dplyr::rename_with()
以编程方式重命名中的所有变量
df
。
df |>
rename_with(\(x) str_remove(x, "long_variable_name_part_that_is_always_the_same_"))
#> # A tibble: 10 × 10
#> var_1 var_2 var_3 var_4 var_5 var_6 var_7 var_8 var_9 var_10
#> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
#> 1 1 1 1 1 1 1 1 1 1 1
#> 2 2 2 2 2 2 2 2 2 2 2
#> 3 3 3 3 3 3 3 3 3 3 3
#> 4 4 4 4 4 4 4 4 4 4 4
#> 5 5 5 5 5 5 5 5 5 5 5
#> 6 6 6 6 6 6 6 6 6 6 6
#> 7 7 7 7 7 7 7 7 7 7 7
#> 8 8 8 8 8 8 8 8 8 8 8
#> 9 9 9 9 9 9 9 9 9 9 9
#> 10 10 10 10 10 10 10 10 10 10 10