首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grep()和sub()和正则表达式

grep()和sub()和正则表达式
EN

Stack Overflow用户
提问于 2018-06-13 18:51:33
回答 3查看 129关注 0票数 1

我想将data.frame中的变量名从"pmm_StartTimev4_E2_C19_1“更改为"pmm_StartTimev4_E2_C19”。因此,如果名称以下划线结尾,后面跟着任意数字,则它将被移除。

但是,我希望只有当变量名在中包含单词“”时,才会发生这种情况。

我有一些乱七八糟的代码不起作用。任何帮助都将不胜感激!

代码语言:javascript
复制
# Current data frame:    
dfbefore <- data.frame(a=c("pmm_StartTimev4_E2_C19_1","pmm_StartTimev4_E2_E2_C1","delivery_C1_C12"),b=c("pmm_StartTo_v4_E2_C19_2","complete_E1_C12_1","pmm_StartTo_v4_E2_C19"))

# Desired data frame:
dfafter <- data.frame(a=c("pmm_StartTimev4_E2_C19","pmm_StartTimev4_E2_E2_C1","delivery_C1_C12"),b=c("pmm_StartTo_v4_E2_C19","complete_E1_C12_1","pmm_StartTo_v4_E2_C19"))

# Current code:
sub((.*{1,}[0-9]*).*","",grep("Start",names(df),value = TRUE)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-13 19:00:22

使用gsub()这样的东西怎么样?

代码语言:javascript
复制
stripcol <- function(x) {
  gsub("(.*Start.*)_\\d+$", "\\1", as.character(x))  
}

dfnew <- dfbefore
dfnew[] <- lapply(dfbefore, stripcol)

我们使用正则表达式查找"Start“,然后获取除了末尾的下划线数字以外的所有内容。我们使用lapply将该函数应用于所有列。

票数 1
EN

Stack Overflow用户

发布于 2018-06-13 18:59:55

我们可以使用sub捕获'Start‘子字符串也存在的组,后面跟着一个下划线和一个或多个数字。在替换中,使用捕获组的反向引用。由于有多个列,所以使用lapply循环这些列,应用sub并将输出分配给原始数据。

代码语言:javascript
复制
out <- dfbefore
out[] <- lapply(dfbefore, sub, 
            pattern = "^(.*_Start.*)_\\d+$", replacement ="\\1")
out

dfafter[] <- lapply(dfafter, as.character)
all.equal(out, dfafter, check.attributes = FALSE)
#[1] TRUE
票数 0
EN

Stack Overflow用户

发布于 2018-06-13 19:01:57

代码语言:javascript
复制
doit <- function(x){
  x <- as.character(x)
  if(grepl("Start",x)){
    x <- gsub("_([0-9])","",x)
  }
  return(x)
} 


apply(dfbefore,c(1,2),doit)

a b [1,] "pmm\_StartTimev4\_E2\_C19" "pmm\_StartTo\_v4\_E2\_C19" [2,] "pmm\_StartTimev4\_E2\_E2\_C1" "complete\_E1\_C12\_1" [3,] "delivery\_C1\_C12" "pmm\_StartTo\_v4\_E2\_C19"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50844306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档