1

我有一个 df 如下:

Code              LA.Name  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19
1 E06000001           Hartlepool 25 20 27 22 15 20 18 17 16 15 16 23 16 28 29 34 40 36 39
2 E06000002        Middlesbrough 46 30 30 36 18 19 19 30 31 31 24 17 37 66 64 76 60 61 48
3 E06000003 Redcar and Cleveland 39 40 24 23 26 42 33 36 31 28 20 27 32 29 45 49 49 39 33
4 E06000004     Stockton-on-Tees 38 46 33 49 26 40 23 23 35 39 35 40 33 49 67 52 36 47 49
5 E06000005           Darlington 23 31 27 21 23 17 19 29 33 19 21 22 22 28 33 39 36 33 34
6 E06000006               Halton 36 21 34 31 27 24 29 20 16 30 20 24 27 33 40 52 37 37 33
> 

如您所见,列 3:21 用数字命名,我想在列名前加上“w”。如何在不输入 22 个新列名的列表的情况下做到这一点?

4

4 回答 4

2

dplyr但不需要的解决方案stringr

library(dplyr)
df %>% 
  rename_at(3:21, ~paste0("w", .))
于 2020-05-24T16:28:24.410 回答
2

如果您碰巧在dplyr管道内,您还可以使用

library(dplyr)
library(stringr)

df %>% 
  rename_at(1:19, ~str_c("w", .))
于 2020-05-24T16:23:39.923 回答
2
names(df)[3:21] <- paste0("w", names(df)[3:21])
于 2020-05-24T16:16:18.977 回答
2

您可以使用一些正则表达式来识别列名中的数字并相应地修改它们

names(df) <- gsub("([0-9]{1,})", "w\\1", names(df)
于 2020-05-24T16:16:27.660 回答