如何在 R-Programming 中匹配和替换存储在 R 数据框中的列名?
如果我们有一个数据框,其中包含一列与数据框的列名匹配的列名和另一列具有不同值的列,那么我们可以将这些不同的值设置为具有匹配列名的数据框的新列名.
这可以在匹配功能的帮助下完成。查看以下示例以了解其工作原理。
示例1
以下代码段创建了一个示例数据框-
x1<-rnorm(20) x2<-rnorm(20) x3<-rnorm(20) df1<-data.frame(x1,x2,x3) df1
创建了以下数据框
x1 x2 x3 1 0.76231437 -0.18459872 -0.836848620 2 0.31998649 1.24599469 0.096976964 3 0.11319510 -1.19200362 -0.824255747 4 0.47570366 0.24791478 0.355295166 5 -0.84546806 1.05928526 -1.073653485 6 -1.89667914 0.92187888 1.552141225 7 -1.81604483 0.05974304 -0.244209195 8 0.05762202 0.14238099 0.957877205 9 -0.79539907 0.42396450 0.219413291 10 0.47248362 2.44519391 -0.126831024 11 0.91802738 -0.84282349 1.577785667 12 -1.30378165 1.04226653 -0.528164742 13 0.88999575 1.74773475 1.409087713 14 -0.43192360 0.11203207 0.976614195 15 -0.68683934 0.67849795 -0.004272223 16 -0.68894471 1.33377663 -0.397701119 17 1.06729808 -0.04649078 0.578908343 18 -0.73322670 -0.52255298 0.355650527 19 0.28593460 -1.19460885 -0.094308012 20 0.76086277 -0.38646442 -0.484786025
将以下代码添加到上述代码段-
x1<-rnorm(20) x2<-rnorm(20) x3<-rnorm(20) df1<-data.frame(x1,x2,x3) df1_col<-data.frame(Var1=c("x","y","z"),Var2=c("x1","x2","x3")) df1_col
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
Var1 Var2 1 x x1 2 y x2 3 z x3
要将df1的列名更改为上面创建的数据框中df1_col中Var1中的值,请将以下代码添加到上述代码段中-
x1<-rnorm(20) x2<-rnorm(20) x3<-rnorm(20) df1<-data.frame(x1,x2,x3) df1_col<-data.frame(Var1=c("x","y","z"),Var2=c("x1","x2","x3")) names(df1) <- df1_col$Var1[match(names(df1),df1_col$Var2)] df1输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
x y z 1 0.76231437 -0.18459872 -0.836848620 2 0.31998649 1.24599469 0.096976964 3 0.11319510 -1.19200362 -0.824255747 4 0.47570366 0.24791478 0.355295166 5 -0.84546806 1.05928526 -1.073653485 6 -1.89667914 0.92187888 1.552141225 7 -1.81604483 0.05974304 -0.244209195 8 0.05762202 0.14238099 0.957877205 9 -0.79539907 0.42396450 0.219413291 10 0.47248362 2.44519391 -0.126831024 11 0.91802738 -0.84282349 1.577785667 12 -1.30378165 1.04226653 -0.528164742 13 0.88999575 1.74773475 1.409087713 14 -0.43192360 0.11203207 0.976614195 15 -0.68683934 0.67849795 -0.004272223 16 -0.68894471 1.33377663 -0.397701119 17 1.06729808 -0.04649078 0.578908343 18 -0.73322670 -0.52255298 0.355650527 19 0.28593460 -1.19460885 -0.094308012 20 0.76086277 -0.38646442 -0.484786025
示例2
以下代码段创建了一个示例数据框-
a<-rpois(20,2) b<-rpois(20,5) c<-rpois(20,2) df2<-data.frame(a,b,c) df2
创建了以下数据框
a b c 1 3 6 0 2 1 7 5 3 2 5 3 4 1 1 2 5 4 9 2 6 0 3 3 7 1 6 1 8 0 6 3 9 4 6 2 10 1 4 2 11 3 2 2 12 0 6 2 13 1 4 2 14 0 7 2 15 4 2 2 16 2 4 5 17 2 3 0 18 4 5 4 19 3 3 1 20 3 4 2
将以下代码添加到上述代码段-
a<-rpois(20,2) b<-rpois(20,5) c<-rpois(20,2) df2<-data.frame(a,b,c) df2_col<-data.frame(Ranks=c("Rank1","Rank2","Rank3"),Var=c("a","b","c")) df2_col输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
Ranks Var 1 Rank1 a 2 Rank2 b 3 Rank3 c
要将df2的列名更改为上面创建的数据框中df2_col中Var中的值,请将以下代码添加到上述代码段中-
a<-rpois(20,2) b<-rpois(20,5) c<-rpois(20,2) df2<-data.frame(a,b,c) df2_col<-data.frame(Ranks=c("Rank1","Rank2","Rank3"),Var=c("a","b","c")) names(df2)<-df2_col$Ranks[match(names(df2),df2_col$Var)] df2输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
Rank1 Rank2 Rank3 1 3 6 0 2 1 7 5 3 2 5 3 4 1 1 2 5 4 9 2 6 0 3 3 7 1 6 1 8 0 6 3 9 4 6 2 10 1 4 2 11 3 2 2 12 0 6 2 13 1 4 2 14 0 7 2 15 4 2 2 16 2 4 5 17 2 3 0 18 4 5 4 19 3 3 1 20 3 4 2