如何使用R按变量重命名列?

时间:2014-09-12 15:14:25

标签: r

我有data.frame这样:

dsl.0 dsl.10 dsl.2 dsl.11 dsl.1 dsl.3 dsl.5 dsl.4 dsl.6 dsl.7 dsl.9 dsl.8 dsl.14 dsl.13 dsl.12
1     0      0     0    161     1     0     0   173     1     1     0     0      0    165      3
2     0      0     0    161   161   133     0   173     1     1     0     0      0    165      3
3     0      0     0    161   161   133     0   173     1     1     0     0      0    165      3
4     0      0     0    161   161   133     0   173     1     1     0     0      0    165      3
5     0      0     0    161   161   133     0   173     1     1     0     0      0    165      3
6     0      0     0    161   161   133     0   173     1     1     0     0      0    165      3

列的名称由dsl.N组成,其中N是索引。名字毫无意义,所以我想用真名取而代之。 dsl的名称和索引之间的关系如下:

local_index local_name threshold sg_local_index sg_local_name location_id
1               0         A40_1        84              0             A           4
2              10          X201        40              0             A           4
4               2          X501        40              0             A           4
5              11          X202        84              0             A           4
8               1         A40_2        84              0             A           4
12              3          X502        40              0             A           4
23              5            D1        40              3             D           4
27              4           D50        84              3             D           4
28              6           E50        84              4             E           4
29              7            E1        40              4             E           4
39              9         K60_2        84              9             K           4
40              8         K60_1        84              9             K           4
41             14          L0_2        84             10             L           4
42             13           L50        84             10             L           4
46             12          L0_1        40             10             L           4

local_index在第一个dsl.N中由data.frame表示;我想将data.frame的第一个dsl.N列的名称更改为真实姓名,例如A40_1,X202。是否可以像这样处理列的名称?

1 个答案:

答案 0 :(得分:3)

尝试(如果d1d2是两个数据集)

names(d1) <- d2$local_name[match(as.numeric(gsub(".*\\.", "",colnames(d1))),
                                                     d2$local_index)]


head(d1,2)
#  A40_1 X201 X501 X202 A40_2 X502 D1 D50 E50 E1 K60_2 K60_1 L0_2 L50 L0_1
#1     0    0    0  161     1    0  0 173   1  1     0     0    0 165    3
#2     0    0    0  161   161  133  0 173   1  1     0     0    0 165    3