gpt4 book ai didi

在 R 中将值四舍五入到最接近的十或百?

转载 作者:行者123 更新时间:2023-12-02 20:40:45 32 4
gpt4 key购买 nike

我的数据框中有超过 10,000 个测试分数计算不正确。它们看起来像这样:

Student   Computed Score
1 71.00
2 55.3489
3 2000.11111
4 1689.66

我想将它们四舍五入到最接近的“10”(变量 1:71 = 70、1689.66 = 1690)以及最接近的“100”(变量 2:71 = 100、1689.66 = 1700)。因为原始值是按 10 点增量、100 点分界计算的。我尝试过:

df$Var1<-round(df$Computed_Score, 2)
但它将小数点四舍五入到 2 个值(2000.11111 变成 2000.11,这没有帮助)。

最佳答案

也许下面的内容就可以了。

x <- scan(text = "
71.00
55.3489
2000.11111
1689.66")
x

round_to <- function(x, to = 10) round(x/to)*to

round_to(x)
round_to(x, 100)

编辑。

comment之后由用户 ORStudent 我编写了一个新函数,roundup_to

roundup_to <- function(x, to = 10, up = FALSE){
if(up) round(.Machine$double.eps^0.5 + x/to)*to else round(x/to)*to
}

roundup_to(c(150, 116350), to = 100)
# [1] 200 116400

roundup_to(c(150, 116350), to = 100, up = TRUE)
# [1] 200 116400

roundup_to(c(50, 116250), to = 100)
#[1] 0 116200

roundup_to(c(50, 116250), to = 100, up = TRUE)
#[1] 100 116300

关于在 R 中将值四舍五入到最接近的十或百?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46135763/

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