我的一个变量的范围从 1 到 5,其他的从 0 到 10。为了便于解释和比较,我需要转换变量的比例,使它们的范围都从 0 到 10。如何重新调整 1- 5比0-10?
问问题
516 次
1 回答
2
我们可以使用形式的线性变换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
您可以根据需要range1
进行更改range2
。
于 2019-01-24T11:05:30.923 回答