[英]Normalizing different Columns with Different Scales in R
我合并了几个数据集,现在面临着扩展的挑战。
假设在一个特定的数据集中,一列的比例是 1-10,而从另一个数据集中,比例是 1-4。
如何使这些列在 R 中具有相同的比例(例如 1-10)?
一般来说,如果你有一个向量x
并且你想对x
进行线性变换,使其范围从r1
到r2
,你可以像这样变换它:
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.