【问题标题】:How do i change the scale of a variable? [duplicate]如何更改变量的比例? [复制]
【发布时间】:2019-01-24 10:56:52
【问题描述】:

我的一个变量的范围从 1 到 5,其他的从 0 到 10。为了便于解释和比较,我需要转换我的变量的尺度,使它们都在 0 到 10 的范围内。如何将 1-5 重新缩放为 0-10?

【问题讨论】:

  • 将所有内容乘以 2?
  • 也许使用scale()

标签: r variables transform rescale


【解决方案1】:

我们可以使用f(x) = a + b * x 形式的线性变换。

这是一个使用一些随机样本数据的可重现示例:

set.seed(2018)
x1 <- sample(1:5, 10, replace = T)
x2 <- sample(1:10, 10, replace = T)

f <- function(x) round(-5/2 + 5/2 * x)

f(x1)
#[1]  2  5  0  0  5  2  8  0 10  5

事实上,我们可以定义一个更通用的函数,允许两个变量的任意范围,并将给定range1 的分数转换为range2 的分数

f <- function(x, range1 = c(1, 5), range2 = c(0, 10)) {
    b <- (range2[2] - range2[1]) / (range1[2] - range1[1])
    a <- range2[2] - b * range1[2]
    return(round(a + b * x))
}
f(x1)
# [1]  2  5  0  0  5  2  8  0 10  5

您可以根据需要更改range1range2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-16
    • 2019-05-09
    • 2015-06-16
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    相关资源
    最近更新 更多