R 仅修改某些列的名称

R 仅修改某些列的名称,r,dplyr,rename,names,R,Dplyr,Rename,Names,我有一个类似于原始数据集的数据集 id <- c(1,1,1,2,3,3,3,4,4) period <- c(1,1,2,2,1,2,3,1,3) iso_1 <- c(1,0,0,0,1,1,0,1,1) iso_2 <- c(1,1,1,0,0,1,0,1,1) iso_3 <- c(1,0,1,0,0,1,0,0,1) original <- data.frame(id, period, iso_1, iso_2, iso_3) id使用dply

我有一个类似于原始数据集的数据集

id <- c(1,1,1,2,3,3,3,4,4)
period <- c(1,1,2,2,1,2,3,1,3)
iso_1 <- c(1,0,0,0,1,1,0,1,1)
iso_2 <- c(1,1,1,0,0,1,0,1,1)
iso_3 <- c(1,0,1,0,0,1,0,0,1)

original <- data.frame(id, period, iso_1, iso_2, iso_3)


id使用
dplyr

library(dplyr)
original %>% rename_with(~paste0(., '_exp'), starts_with('iso'))

#  id period iso_1_exp iso_2_exp iso_3_exp
#1  1      1         1         1         1
#2  1      1         0         1         0
#3  1      2         0         1         1
#4  2      2         0         0         0
#5  3      1         1         0         0
#6  3      2         1         1         1
#7  3      3         0         0         0
#8  4      1         1         1         0
#9  4      3         1         1         1
基准R:

cols <- grep('^iso', names(original))
names(original)[cols] <- paste0(names(original)[cols], '_exp')

cols使用
dplyr

library(dplyr)
original %>% rename_with(~paste0(., '_exp'), starts_with('iso'))

#  id period iso_1_exp iso_2_exp iso_3_exp
#1  1      1         1         1         1
#2  1      1         0         1         0
#3  1      2         0         1         1
#4  2      2         0         0         0
#5  3      1         1         0         0
#6  3      2         1         1         1
#7  3      3         0         0         0
#8  4      1         1         1         0
#9  4      3         1         1         1
基准R:

cols <- grep('^iso', names(original))
names(original)[cols] <- paste0(names(original)[cols], '_exp')

cols在base R中,您可以通过索引修改:

colnames(original)[3:5] <-  paste(colnames(original)[3:5], "exp", sep = "_")
输出:

 id period iso_1_exp iso_2_exp iso_3_exp
1  1      1         1         1         1
2  1      1         0         1         0
3  1      2         0         1         1
4  2      2         0         0         0
5  3      1         1         0         0
6  3      2         1         1         1
7  3      3         0         0         0
8  4      1         1         1         0
9  4      3         1         1         1

在base R中,您可以通过索引修改:

colnames(original)[3:5] <-  paste(colnames(original)[3:5], "exp", sep = "_")
输出:

 id period iso_1_exp iso_2_exp iso_3_exp
1  1      1         1         1         1
2  1      1         0         1         0
3  1      2         0         1         1
4  2      2         0         0         0
5  3      1         1         0         0
6  3      2         1         1         1
7  3      3         0         0         0
8  4      1         1         1         0
9  4      3         1         1         1
我们可以使用

library(stringr)
library(dplyr)
original %>% 
  rename_with(~str_c(., '_exp'), starts_with('iso'))
我们可以使用

library(stringr)
library(dplyr)
original %>% 
  rename_with(~str_c(., '_exp'), starts_with('iso'))

非常感谢Ronak。Dplyr方式有效,但不是基本的R方式。哦..对不起,你是对的。更正了答案@vogSuper谢谢Ronak。Dplyr方式有效,但不是基本的R方式。哦..对不起,你是对的。更正了答案@vogAkrun很高兴见到你。您能在此提供帮助吗:@TarJae您的代码对我来说运行良好,示例AKRUN很高兴见到您。您能在此提供帮助吗:@TarJae您的代码在示例中对我来说运行良好