r - 从列变量中删除前缀字母
问题描述
我有所有以“”开头的列名m
。示例:mIncome, mAge
。我想删除prefix
. 到目前为止,我已经尝试了以下方法:
df %>%
rename_all(~stringr::str_replace_all(.,"m",""))
这将删除所有包含字母“ m
”的列名。我只需要从一开始就将其删除。有什么建议么?
解决方案
我们需要指定位置。匹配字符串的^
开头(或此处的列名)。因此,如果我们使用^m
,它只会匹配字符串开头或开头的 'm' 而不会匹配其他地方。
library(dplyr)
library(stringr)
df %>%
rename_all(~stringr::str_replace(.,"^m",""))
# ba Mbgeg gmba cfor
#1 1 2 4 6
#2 2 3 5 7
#3 3 4 6 8
此外,如果应该忽略大小写,请使用regex
并指定ignore_case = TRUE
df %>%
rename_all(~ stringr::str_replace(., regex("^m", ignore_case = TRUE), ""))
# ba bgeg gmba cfor
#1 1 2 4 6
#2 2 3 5 7
#3 3 4 6 8
另一个选项是单词边界 ( \\bm
),但这可以匹配有多个单词列名的单词的开头
注意:str_replace_all
当我们想要替换多次出现的pattern
. 在这里,我们只需要替换第一个实例str_replace
就足够了。
数据
df <- data.frame(mba = 1:3, Mbgeg = 2:4, gmba = 4:6, cfor = 6:8)