pdu*_*ois 7 regex r stringr dplyr tidyverse
我有以下内容:
library(tidyverse)
df <- tibble::tribble(
~sample, ~colB, ~colC,
"foo", 1, 2,
"bar_x", 2, 3,
"qux.6hr.ID", 3, 4,
"dog", 1, 1
)
df
#> # A tibble: 4 x 3
#> sample colB colC
#> <chr> <dbl> <dbl>
#> 1 foo 1 2
#> 2 bar_x 2 3
#> 3 qux.6hr.ID 3 4
#> 4 dog 1 1
df <- factor(final_df$samples, levels=c("bar_x","foo","qux.6hr.ID","dog"))
df
#> [1] foo bar_x qux.6hr.ID dog
#> Levels: bar_x foo qux.6hr.ID dog
Run Code Online (Sandbox Code Playgroud)
我想要做的是对于sample列中的每一行删除这些子字符串:_x以及.6hr如果存在的话。决赛桌如下所示:
sample colB colC
foo 1 2
bar 2 3
qux.ID 3 4
dog 1 1
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
akr*_*run 10
我们可以用
df %>%
mutate(sample = gsub("_x|\\.\\d+[A-Za-z]+", "", sample))
# A tibble: 4 x 3
# sample colB colC
# <chr> <dbl> <dbl>
#1 foo 1 2
#2 bar 2 3
#3 qux.ID 3 4
#4 dog 1 1
Run Code Online (Sandbox Code Playgroud)
如果“样本”列是类,我们可以在输出上factor包装或在样本上执行此操作factorgsublevels
levels(df$sample) <- gsub("_x|\\.\\d+[A-Za-z]+", "", levels(df$sample))
df$sample
#[1] foo bar qux.ID dog
#Levels: bar foo qux.ID dog
Run Code Online (Sandbox Code Playgroud)