【问题标题】:Quantile normalize a single column in R分位数标准化 R 中的单个列
【发布时间】:2014-12-31 00:54:40
【问题描述】:

我在 R 中的数据框中有一列 data$height。值的范围是 0-400。我想对列中的值进行规范化,使结果值介于 0-1 之间并且是分位数,即数据集中的中值应该反映 0.5 作为较新的值。

关于如何做到这一点的任何猜测。

【问题讨论】:

    标签: r normalization


    【解决方案1】:

    你想要某种rank,例如

    > set.seed(1)
    > exdf <- data.frame(height = runif(5, min=0, max=400))
    > exdf$r1 <- (rank(exdf$height) - 1) / (length(exdf$height)-1)
    > exdf$r2 <- (rank(exdf$height)-1/2) /  length(exdf$height)
    > exdf 
         height   r1  r2
    1 106.20347 0.25 0.3
    2 148.84956 0.50 0.5
    3 229.14135 0.75 0.7
    4 363.28312 1.00 0.9
    5  80.67277 0.00 0.1
    

    【讨论】:

      【解决方案2】:

      R 函数ppoints 是将值映射到百分位等级的常用方法。

      查看它的 a 参数 -

      设置a=1取最小值为0,最大值为1

      设置a=0取最小值为1/(n+1),最大值为n/(n+1)

      默认情况下它有 a=3/8(如果 n 小于或等于 10)或 a=1/2(当 n 大于 10)

      此函数被 R 中的其他函数使用。例如,它被 qqnorm 调用以进行正常的分位数-分位数图。

      【讨论】:

        猜你喜欢
        • 2013-02-19
        • 2014-03-26
        • 1970-01-01
        • 2018-06-08
        • 2021-02-28
        • 1970-01-01
        • 1970-01-01
        • 2018-12-10
        相关资源
        最近更新 更多