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