分位数标准化R中的单个列

时间:2014-11-04 06:53:50

标签: r normalization

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

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

2 个答案:

答案 0 :(得分:3)

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

请参阅其a参数 -

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

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

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

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

答案 1 :(得分:2)

您需要某种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