如何在R中使用setNames更改单个列的名称?


要使用setNames更改单个列的名称,我们需要指定需要更改的列名。

例如,如果我们有一个名为df的数据框,其中包含三列,例如Var1、var2和Var3,并且我们想将var2更改为Var2,那么我们可以使用如下命令:

setNames(df,replace(names(df),names(df)=="var2","Var2"))

示例1

以下代码片段创建了一个示例数据框:

x<-rnorm(20)
x1<-rnorm(20)
df1<-data.frame(x,x1)
df1

输出

创建了以下数据框:

       x            x1
1   0.885142314  -0.18025261
2  -0.048954839   0.87720112
3   0.896212666  -0.53714354
4   0.539095496  -0.19380810
5  -1.706763224   0.79608177
6  -1.628122107  -1.17570164
7  -1.000949495   0.09243436
8   1.344899293  -0.34504828
9   0.290659812   0.57493564
10 -1.366119792   0.39442545
11 -0.002044629  -0.60124159
12  1.056147083  -0.05670359
13  1.245766258  -0.91321178
14  1.202689649   0.42440362
15 -1.238028330  -1.31709063
16  0.962875354   1.43057923
17  0.692604922  -0.60277152
18  1.721352577   0.67629134
19 -2.373829503  -0.09540660
20  0.031280271   1.90790870

为了将列x1的名称更改为y,请将以下代码添加到上述代码片段中:

x<-rnorm(20)
x1<-rnorm(20)
df1<-data.frame(x,x1)
setNames(df1,replace(names(df1),names(df1)=="x1","y"))

输出

如果您将上述所有代码作为单个程序执行,它将生成以下输出:

         x           y
1   0.885142314  -0.18025261
2  -0.048954839   0.87720112
3   0.896212666  -0.53714354
4   0.539095496  -0.19380810
5  -1.706763224   0.79608177
6  -1.628122107  -1.17570164
7  -1.000949495   0.09243436
8   1.344899293  -0.34504828
9   0.290659812   0.57493564
10 -1.366119792   0.39442545
11 -0.002044629  -0.60124159
12  1.056147083  -0.05670359
13  1.245766258  -0.91321178
14  1.202689649   0.42440362
15 -1.238028330  -1.31709063
16  0.962875354   1.43057923
17  0.692604922  -0.60277152
18  1.721352577   0.67629134
19 -2.373829503  -0.09540660
20  0.031280271   1.90790870

示例2

以下代码片段创建了一个示例数据框:

a<-rpois(20,5)
a_2<-rpois(20,2)
df2<-data.frame(a,a_2)
df2

输出

创建了以下数据框:

   a a_2
1  5  7
2  3  2
3  7  2
4  5  0
5  6  0
6  4  1
7  8  3
8  6  1
9  7  2
10 6  3
11 4  0
12 3  2
13 5  0
14 7  2
15 3  1
16 9  3
17 2  2
18 4  1
19 2  7
20 1  1

为了将列a_2的名称更改为b,请将以下代码添加到上述代码片段中:

a<-rpois(20,5)
a_2<-rpois(20,2)
df2<-data.frame(a,a_2)
df2<-data.frame(a,a_2) 
setNames(df2,replace(names(df2),names(df2)=="a_2","b"))

输出

如果您将上述所有代码作为单个程序执行,它将生成以下输出:

   a  b
1  5  7
2  3  2
3  7  2
4  5  0
5  6  0
6  4  1
7  8  3
8  6  1
9  7  2
10 6  3
11 4  0
12 3  2
13 5  0
14 7  2
15 3  1
16 9  3
17 2  2
18 4  1
19 2  7
20 1  1

更新于:2021年11月6日

442 次浏览

启动您的职业生涯

完成课程后获得认证

开始
广告