[英]How to replace one digit numbers by two digits numbers using stringr in R
我想用 s01_、 s02_
、 s09_
和s10_
替換列 x s1_
、 s2_
、 s9_
和s10_
的s01_
。 我可以很容易地針對每種情況(例如s1_
)做到這一點,但不是針對所有情況(我的正則表達式知識很短)。 我怎樣才能在不重復自己的情況下完成所有這些替換?
library(tidyverse)
df <- tibble( x = c('s1_', 's2_', 's9_', 's10_'))
pattern <- 's1_'
replacement <- 's01_'
stringr::str_replace(df$x, pattern, replacement)
#> [1] "s01_" "s2_" "s9_" "s10_"
Created on 2020-11-12 by the reprex package (v0.3.0)
gsubfn
的選項
library(gsubfn)
df$x <- gsubfn("(\\d+)", ~sprintf('%02d', as.numeric(x)), df$x)
類似於gsubfn
, str_replace
替換可以采用 function
library(stringr)
str_replace(df$x, "\\d+", function(x) sprintf('%02d', as.numeric(x)))
#[1] "s01_" "s02_" "s09_" "s10_"
或dplyr
library(dplyr)
df %>%
mutate(x = str_replace(x, "\\d+",
purrr::as_mapper(~ sprintf('%02d', as.numeric(.x)))))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.