R 从列变量中删除前缀字母
我有所有以“m”开头的列名。例子:明康,法师。我想删除前缀。到目前为止,我已经尝试了以下方法:R 从列变量中删除前缀字母,r,dplyr,R,Dplyr,我有所有以“m”开头的列名。例子:明康,法师。我想删除前缀。到目前为止,我已经尝试了以下方法: df %>% rename_all(~stringr::str_replace_all(.,"m","")) 这将删除所有包含字母“m”的列名。我只需要从一开始就把它拆下来。有什么建议吗?我们需要指定位置。^与字符串的开头或此处的列名匹配。因此,如果我们使用^m,它将只在字符串的开头或开头匹配'm',而不会在其他地方匹配 library(dplyr)
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
另一个选项是word boundary\\bm,但这可能与有多个单词列名的单词开头相匹配
注意:str_replace_all用于替换多次出现的模式。在这里,我们只需要替换第一个实例,对于这个str_替换就足够了
数据
我们需要指定位置。^与字符串的开头或此处的列名匹配。因此,如果我们使用^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
另一个选项是word boundary\\bm,但这可能与有多个单词列名的单词开头相匹配
注意:str_replace_all用于替换多次出现的模式。在这里,我们只需要替换第一个实例,对于这个str_替换就足够了
数据
另一种方法你可以试试
library(tidyverse)
df <- data.frame(mma = 1:2, mbapbe = 1:2)
df2 <- df %>%
rename_at(vars(c("mma", "mbapbe")) ,function(x) gsub("^m", "", x))
# ma bapbe
# 1 1 1
# 2 2 2
另一种方法你可以试试
library(tidyverse)
df <- data.frame(mma = 1:2, mbapbe = 1:2)
df2 <- df %>%
rename_at(vars(c("mma", "mbapbe")) ,function(x) gsub("^m", "", x))
# ma bapbe
# 1 1 1
# 2 2 2
可以使用底端R中的sub来删除列名开头的m
names(df) <- sub('^m', '', names(df))
可以使用底端R中的sub来删除列名开头的m
names(df) <- sub('^m', '', names(df))
谢谢这很有效。我想如果你想替换所有的列名,就应该替换所有的列名。谢谢你澄清这一点。我看到rename\u all已经做到了这一点。@AmoghJoshi rename\u all暗示=>重命名所有列。str_replace_all=>用替换值替换字符串中模式的每个实例谢谢!这很有效。我想如果你想替换所有的列名,就应该替换所有的列名。谢谢你澄清这一点。我看到rename\u all已经做到了这一点。@AmoghJoshi rename\u all暗示=>重命名所有列。str_replace_all=>用替换值替换字符串中模式的每个实例