gpt4 book ai didi

r - 将整数转换为十进制值

转载 作者:行者123 更新时间:2023-12-04 16:25:46 27 4
gpt4 key购买 nike

我在 1:10000 之间有一组整数数据.我需要将它们带入范围 0:1 .

例如,转换

  • 12 --> 0.12
  • 123 --> 0.123
  • 1234 --> 0.1234

  • 等(请注意,我不想 scale 值)。

    任何建议如何一次对所有数据执行此操作?

    最佳答案

    我会简单地做

    x <- c(2, 14, 128, 1940, 140, 20000)
    x/10^nchar(x)
    ## [1] 0.200 0.140 0.128 0.194 0.140 0.200

    但是@Frank 提供了一种更快的方法(避免了 character 转换)
    x/10^ceiling(log10(x))

    基准
    library(microbenchmark)

    set.seed(123)
    x <- sample(1e8, 1e6)

    microbenchmark(
    david = x/10^nchar(x),
    davidfrank = x/10^ceiling(log10(x)),
    richard1 = as.numeric(paste0(".", x)),
    richard2 = as.numeric(sprintf(".%d", x))
    )

    # Unit: milliseconds
    # expr min lq mean median uq max neval cld
    # david 691.0513 822.6482 1052.2473 956.5541 1153.4779 2391.7856 100 b
    # davidfrank 130.0522 164.3227 255.8397 197.3158 339.3224 576.2255 100 a
    # richard1 1130.5160 1429.8314 1972.2624 1689.8454 2473.6409 4791.0558 100 c
    # richard2 712.8357 926.8013 1181.5349 1103.1661 1315.4459 2753.6795 100 b

    关于r - 将整数转换为十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33289371/

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