gpt4 book ai didi

r - 如何在 R 中隔离小数点后的数字?

转载 作者:行者123 更新时间:2023-12-02 03:33:32 26 4
gpt4 key购买 nike

例如:我有号码 123.456,想要返回 456。

函数 trunc() 基本上隔离了 (truncates) 小数点之前的数字。

是否有一个函数可以仅隔离小数点后的数字?

两个后续问题:

  1. 有没有办法在不写出正则表达式的情况下做到这一点?

  2. 如果我想保留该标志怎么办?例如,如果我想(反向)将 -123.456 截断为 -456。

最佳答案

我猜想,使用模运算符 (%%) 和 1 作为除数是可行的。它确实成功地隔离了小数点后面的数字,但保留了小数点:

123.456 %% 1
[1] 0.456

但是,它仅适用于正数,因为不保留符号,也不报告正确的数字(b/c 模运算符的功能):

-123.456 %% 1
[1] 0.544 #not what is wanted

包含 abs() 可以修复该问题,但无助于报告签名。可以通过添加以下内容来包含符号:

sign(x) * (abs(x) %% 1)
<小时/>

如果我们确实想报告小数点后的数字(即排除 0 和小数点),我们可以执行以下操作(分 2 个步骤呈现)为了清楚起见):

x <- -123.456
y <- sign(x) * (abs(x) %% 1)
as.numeric(gsub("0.","",y))
[1] -456 #as desired from part 2 in the OP

关于r - 如何在 R 中隔离小数点后的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39799207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com