使用str_detect查找关键字,然后使用符合模式的新名称替换这些列名

hwamh0ep  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(95)

我想知道是否有人能帮我解决这个问题。
例如,在虹膜数据中,我想使用str_detect来查找哪些列以关键字“Sepal”开头。在找到以我的关键字开头的列之后,我想能够用与找到第一列时对应的数字重命名所有这些列。因此,在虹膜数据的情况下,我想将“Sepal. Length”和“Sepal. Width”更改为“S1”,“S2”,“S3”,“S4”,“S5”,“S6”,“S8”,“S9”,“S10”,“S11”,“S12”,“S12”,“S13”,“S14”,“S15”,“S16”,“S17”,“S18”,“S19”,“S19”,“S19”,“S19”,“S19”,“S19”,“S19”,“S19”,“S19”,“S19”,“S19”"S3""..."直到找到最后一个关键字。
我希望能够用100多个变量的dataframe复制这个,并能够重命名这些变量中的30个,就像你对虹膜数据一样。
如果我的格式与正常的格式不同,我提前道歉。我是R/编程的新手,所以这对我来说都是新的信息。谢谢!
输入:str_replace(names(iris),paste0('^\Q',"Sepal",'\E'),'\d + cBFI')
其给出以下输出:
str_replace(names(iris),paste0('^\Q',"Sepal",'\E'),'\d + S')[1]"d + S. Length""d + S. Width""Petal. Length""Petal. Width""Species"
但我想要的是:[1]"S1""S2""花瓣.长度""花瓣.宽度""种"

0tdrvxhp

0tdrvxhp1#

您可以:

library(dplyr)

iris %>%
 rename_with(~ paste0("S", seq_along(.x)), starts_with("Sepal"))

     S1  S2 Petal.Length Petal.Width    Species
1   5.1 3.5          1.4         0.2     setosa
2   4.9 3.0          1.4         0.2     setosa
3   4.7 3.2          1.3         0.2     setosa
4   4.6 3.1          1.5         0.2     setosa
5   5.0 3.6          1.4         0.2     setosa
...

相关问题