将数字格式化为两位数
Format numeric to two-digits
我有一列数字class,例如:v <- c(12345, 2345, 7689900)
。
我知道每个数字实际上都是12.345, 23.45, 76.89900
的形式,即每个数字都有两位数,其余是小数。
如何将矢量转换成这种格式?在此过程中不应裁剪任何小数。
使用正则表达式,我们可以捕获由 "."
分隔的两组数据。
sub('(..)(.*)', '\1.\2', v)
#[1] "12.345" "23.45" "76.89900"
如果您想对此进行一些操作,可以将其包装在 as.numeric
中。
如果您要查找数值向量,一个选项可能是:
v/10^(nchar(v) - 2)
[1] 12.345 23.450 76.899
编辑:
如果我们有超过 20 个数字,我们可以 Count the number of integer digits 使用 log10:
v/10^(floor(log10(abs(v))) + 1 - 2)
as.numeric(paste0(substring(v,1,2), ".", substring(v,3)))
# [1] 12.345 23.450 76.899
我有一列数字class,例如:v <- c(12345, 2345, 7689900)
。
我知道每个数字实际上都是12.345, 23.45, 76.89900
的形式,即每个数字都有两位数,其余是小数。
如何将矢量转换成这种格式?在此过程中不应裁剪任何小数。
使用正则表达式,我们可以捕获由 "."
分隔的两组数据。
sub('(..)(.*)', '\1.\2', v)
#[1] "12.345" "23.45" "76.89900"
如果您想对此进行一些操作,可以将其包装在 as.numeric
中。
如果您要查找数值向量,一个选项可能是:
v/10^(nchar(v) - 2)
[1] 12.345 23.450 76.899
编辑:
如果我们有超过 20 个数字,我们可以 Count the number of integer digits 使用 log10:
v/10^(floor(log10(abs(v))) + 1 - 2)
as.numeric(paste0(substring(v,1,2), ".", substring(v,3)))
# [1] 12.345 23.450 76.899