添加缺少的小数点(001=0.01 和 01=0.1)
Add in missing decimal (001=0.01 and 01=0.1)
我有一个字符串向量 a<-data.table(value=("001","01"))
,它实际上应该是小数(0.01 和 0.1),我想在第一个 0 处拆分字符串并在它之前添加一个小数。
我可以拆分字符串并得到一个列表
A<-strsplit(a$value, "(?=[0])", perl = TRUE)
所以我可以设想在函数内部执行 paste0(x[[1]][1],".",x[[1]][2]) 但我对如何参考指数:
dFun<-function(){
as.numeric(paste0(x[[1]][1],".",x[[1]][2]))
}
purrr::map_df(.x=1:2,.f=dFun)
任何指点将不胜感激。
也许你可以试试这个
> a[, value := gsub("(?=1)", ".", value, perl = TRUE)][]
value
1: 00.1
2: 0.1
或
> a[, value := sub("(^0)", "\1.", value)][]
value
1: 0.01
2: 0.1
或
> a[, value := as.numeric(sub("(^0)", "\1.", value))][]
value
1: 0.01
2: 0.10
因为 sub
只会替换第一次出现,你可以做 -
library(data.table)
a <- data.table(value=c("001","01"))
a[, value := as.numeric(sub('0', '0.', value))]
a
# value
#1: 0.01
#2: 0.10
与str_replace
library(stringr)
a[, value := as.numeric(str_replace(value, '0', '0.'))]
> a
value
1: 0.01
2: 0.10
`
我有一个字符串向量 a<-data.table(value=("001","01"))
,它实际上应该是小数(0.01 和 0.1),我想在第一个 0 处拆分字符串并在它之前添加一个小数。
我可以拆分字符串并得到一个列表
A<-strsplit(a$value, "(?=[0])", perl = TRUE)
所以我可以设想在函数内部执行 paste0(x[[1]][1],".",x[[1]][2]) 但我对如何参考指数:
dFun<-function(){
as.numeric(paste0(x[[1]][1],".",x[[1]][2]))
}
purrr::map_df(.x=1:2,.f=dFun)
任何指点将不胜感激。
也许你可以试试这个
> a[, value := gsub("(?=1)", ".", value, perl = TRUE)][]
value
1: 00.1
2: 0.1
或
> a[, value := sub("(^0)", "\1.", value)][]
value
1: 0.01
2: 0.1
或
> a[, value := as.numeric(sub("(^0)", "\1.", value))][]
value
1: 0.01
2: 0.10
因为 sub
只会替换第一次出现,你可以做 -
library(data.table)
a <- data.table(value=c("001","01"))
a[, value := as.numeric(sub('0', '0.', value))]
a
# value
#1: 0.01
#2: 0.10
与str_replace
library(stringr)
a[, value := as.numeric(str_replace(value, '0', '0.'))]
> a
value
1: 0.01
2: 0.10
`