替換字符串中specfic列的每一行,我有以下tibble:如何使用dplyr和stringr
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
我想要做的就是每一行中sample
列刪除這些子字符串:_x
和.6hr
如果存在。決賽桌看起來像這樣:
sample colB colC
foo 1 2
bar 2 3
qux.ID 3 4
dog 1 1
我該如何做到這一點?
'df%>%mutate(sample = gsub('_ x | \\。6hr','',sample))'或等同於stringr,'df%>%mutate(sample = str_replace_all(sample,'_x | \ \ .6hr',''))' – alistaire
@alistaire其實我的df包含因子。查看我的更新。抱歉。我怎樣才能修改你的代碼? – pdubois
'gsub'仍然有效,但它強制性格。你可以調用'levels <-',但是在dplyr語法中有點尷尬。 forcats包提供了一個替代方案:'df%>%mutate(sample = factor(sample),sample = forcats :: fct_relabel(sample,function(x){str_replace_all(x,'_x | \\。6hr','' )}))'雖然你必須把第二個參數作爲la laly函數來構造。 – alistaire