使用R中的正则表达式将空格替换为数字
以下是数据表使用R中的正则表达式将空格替换为数字,r,regex,data.table,stringr,R,Regex,Data.table,Stringr,以下是数据表 df <- data.table(id=c(1,2,3,4), variable=c("250","250.1","250.11","E70.9")) df id variable 1: 1 250 2: 2 250.1 3: 3 250.11 4: 4 E70.9 第一部分正在工作,我可以用250.00替换250。当我尝试使用stringsr包和regex时
df <- data.table(id=c(1,2,3,4),
variable=c("250","250.1","250.11","E70.9"))
df
id variable
1: 1 250
2: 2 250.1
3: 3 250.11
4: 4 E70.9
第一部分正在工作,我可以用250.00
替换250
。当我尝试使用stringsr
包和regex
时,它没有成功。最后,我想知道这些结果
id variable
1: 1 250.00
2: 2 250.10
3: 3 250.11
4: 4 E70.9
我应该改变什么来正确使用
stringr
?在数据表中是否有更好的解决方案?我们可以使用sprintf
。通过检查“变量”是否以“250”开头,使用case\u创建逻辑条件,然后使用sprintf
格式化这些元素,或者返回“变量”
library(dplyr)
df %>%
mutate(variable = case_when(str_detect(variable, '^250')
~ sprintf('%.2f', as.numeric(variable)), TRUE ~ variable))
或使用base R
i1 <- grepl('^250', df$variable)
df$variable[i1] <- sprintf('%.2f', as.numeric(df$variable[i1]))
i1我们可以使用sprintf
。通过检查“变量”是否以“250”开头,使用case\u创建逻辑条件,然后使用sprintf
格式化这些元素,或者返回“变量”
library(dplyr)
df %>%
mutate(variable = case_when(str_detect(variable, '^250')
~ sprintf('%.2f', as.numeric(variable)), TRUE ~ variable))
或使用base R
i1 <- grepl('^250', df$variable)
df$variable[i1] <- sprintf('%.2f', as.numeric(df$variable[i1]))
i1Adata.表格
备选方案:
funcAdata.表格
备选方案:
func您可以通过以下方式使用str\u replace
:
library(data.table)
df[, variable := stringr::str_replace(variable,'^250.*', function(m)
sprintf('%.2f', as.numeric(m)))]
df
# id variable
#1: 1 250.00
#2: 2 250.10
#3: 3 250.11
#4: 4 E70.9
str\u replace
仅替换满足模式
参数的值。您可以通过以下方式使用str\u replace
:
library(data.table)
df[, variable := stringr::str_replace(variable,'^250.*', function(m)
sprintf('%.2f', as.numeric(m)))]
df
# id variable
#1: 1 250.00
#2: 2 250.10
#3: 3 250.11
#4: 4 E70.9
str\u replace
只替换那些满足模式
参数的值