是否有一种优雅的 tidyverse 方法来批量重命名列?

nst*_*in1 3 r rename dplyr

我正在使用一个由 Google 表单构建的小型数据集。列名称是完整的调查问题,例如。

“1.哪个团队最能描述您的工作?”
“2.你是经理吗?”
“3.你和x在一起多久了?”

我想将所有这些列重命名为“1”、“2”、“3”等。我知道我可以执行以下操作,但我希望有一种更优雅/更快的方法。像这样的柱子有23根。

survey %>% rename_with(
  `1` = `1. What team most describes your work?`,
  `2` = `2. Are you a manager?`...
Run Code Online (Sandbox Code Playgroud)

这可行,但编写速度很慢。tidyverse 有谁有更好的吗?我对 R 和编码总体来说是新手,所以任何建议都值得赞赏。

ben*_*n23 6

您可以在 中提供多个列rename_with(.cols = your_columns),并使用函数应用于选定的列。此处,问题编号(点之前的数字)被捕获 ( (\\\\d+)),并且整个列名称被该数字替换(正则表达式捕获组 1 \\\\1)。

\n

如果省略该.cols参数,则默认情况下将选择所有列。

\n
library(dplyr)\n\n# dummy df\ndf <- tibble("1. What team most describes your work?" = "1",\n             "2. Are you a manager?" = "2",\n             "3. How long have you been with x?" = "3")\n\ndf %>% rename_with(~sub("(\\\\d+)\\\\..*$", "\\\\1", .x))\n\n# A tibble: 1 \xc3\x97 3\n  `1`   `2`   `3`  \n  <chr> <chr> <chr>\n1 1     2     3    \n
Run Code Online (Sandbox Code Playgroud)\n