繁体   English   中英

在 R 中对具有不同比例的不同列进行归一化

[英]Normalizing different Columns with Different Scales in R

我合并了几个数据集,现在面临着扩展的挑战。

假设在一个特定的数据集中,一列的比例是 1-10,而从另一个数据集中,比例是 1-4。

如何使这些列在 R 中具有相同的比例(例如 1-10)?

一般来说,如果你有一个向量x并且你想对x进行线性变换,使其范围从r1r2 ,你可以像这样变换它:

result = (x - min(x)) / (max(x) - min(x)) * (r2 - r1) + r1

我们可以把它放在一个可以很好地处理NA值的方便函数中:

rescale = function(x, range) {
  rx = range(x, na.rm = TRUE)
  (x - rx[1]) / diff(rx)  * diff(range) + range[1]
}

你可以这样使用:

rescale(1:4, range = c(1, 10))
# [1]  1  4  7 10

或者在您的特定情况下, your_data$col1to4 = rescale(your_data$col1to4, range = range(your_data$col1to10))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM