将子字符串移动到 R 中的字符串末尾

Move substring to end of string in R

我有一组包含大量列的 df。列名称遵循如下模式:

my.df <- data.frame(sentiment_brand1_1 = c(1,0,0,1), sentiment_brand1_2 = c(0,1,1,0),
sentiment_brand2_1 = c(1,1,1,1),
sentiment_brand2_2 = c(0,0,0,0),
brand1_rating_1 = c(1,2,3,4),
brand2_rating_1 = c(4,3,2,1))

我想以编程方式重命名列,将子字符串“brand1”和“brand2”从列名的中间移到末尾,例如:

desired_colnames <- c("sentiment_1_brand1",
 "sentiment_2_brand1",
 "sentiment_1_brand2",
 "sentiment_2_brand2",
 "rating_1_brand1",
 "rating_1_brand2")

捕获子字符串组并在替换中重新排列

 sub("(.*)_(brand1)(.*)", "\1\3_\2", v1)

-输出

[1] "variable_1_brand1" "_stuff_1_brand1"   "thing_brand1"     

数据

v1 <- c("variable_brand1_1", "_brand1_stuff_1", "_brand1thing")
## Input:
Test <- c("variable_brand1_1", "_brand1_stuff_1", "_brand1thing")

library("stringr")
paste(str_remove(Test, "_brand1"), "_brand1", sep = "")

## OutPut:
[1] "variable_1_brand1" "_stuff_1_brand1"   "thing_brand1"