变换数 - 从浮点数修剪积分

时间:2013-12-16 22:45:15

标签: r decimal

给定一列数据(类型为39600.432,39600.433等)我想删除数字的整数部分并仅保留小数(将39600.432转换为432,将39600.433转换为433)。我怎么能这样做?

6 个答案:

答案 0 :(得分:7)

我们说你的专栏是矢量x。

> x <- c(39.456, 976.902)
> x <- x - as.integer(x)
> x
[1] 0.456 0.902

那应该有用。然后,您可以乘以1000将当前x转换为整数。如果你希望3.9变成9,你将需要更多的处理。

> x <- 1000*x
> x
[1] 456 902

希望有所帮助!

答案 1 :(得分:4)

许多好的答案,这里还有一个使用正则表达式。

> g <- c(134.3412,14234.5453)
> gsub("^[^\\.]*\\.", "", g)
[1] "3412" "5453"

答案 2 :(得分:4)

要在没有减法或正则表达式的情况下去除整数部分,可以使用模数运算符。

x <- (10000:10010)/100
x
## [1] 100.00 100.01 100.02 100.03 100.04 100.05 100.06 100.07 100.08 100.09 100.10
x %% 1
## [1] 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10

%% 1在R中有意义。这确实将值保留为小数,这可能不适合您使用。

答案 3 :(得分:1)

您正在寻找floor功能。但你也可以做as.integer

答案 4 :(得分:1)

这是一种使用正则表达式的方法

g<-c(134.3412,14234.5453)
r<-regexpr("[0-9]+$",g)
as.numeric(regmatches(g,r))

答案 5 :(得分:1)

这应该这样做:

g <- c(134.3412,14234.5453)
h <- floor(g)
g - h