相关疑难解决方法(0)

在两点之间缩放一系列

如何缩放系列,使得系列中的第一个数字为0,最后一个数字为1.我查看了"约","缩放",但它们没有实现此目标.

# generate series from exponential distr
s = sort(rexp(100))

# scale/interpolate 's' such that it starts at 0 and ends at 1?
# approx(s)
# scale(s)
Run Code Online (Sandbox Code Playgroud)

scaling r

46
推荐指数
4
解决办法
3万
查看次数

R中的范围标准化(0到1)

可能重复:
在R中的两个点之间缩放一系列

是否知道R函数在向量上执行范围标准化?我希望将变量转换为0到1之间的比例,同时保留排名顺序和值之间的相对大小.

为了清楚起见,我不打算通过SD的中心和缩放来标准化变量,就像在函数scale()中所做的那样.

我在包'dprep'中尝试了函数mmnorm()和rangenorm(),但这些似乎没有完成这项工作.

r

35
推荐指数
1
解决办法
7万
查看次数

在R中缩放数值矩阵,值为0到1

这是我的数字矩阵的摘录

 [1,]   30 -33.129487   3894754.1 -39.701738 -38.356477 -34.220534
 [2,]   29 -44.289487  -8217525.9 -44.801738 -47.946477 -41.020534
 [3,]   28 -48.439487  -4572815.9 -49.181738 -48.086477 -46.110534
 [4,]   27 -48.359487  -2454575.9 -42.031738 -43.706477 -43.900534
 [5,]   26 -38.919487  -2157535.9 -47.881738 -43.576477 -46.330534
 [6,]   25 -45.069487  -5122485.9 -47.831738 -47.156477 -42.860534
 [7,]   24 -46.207487  -2336325.9 -53.131738 -50.576477 -50.410534
 [8,]   23 -51.127487  -2637685.9 -43.121738 -47.336477 -47.040534
 [9,]   22 -45.645487   3700424.1 -56.151738 -47.396477 -50.720534
[10,]   21 -56.739487   1572594.1 -49.831738 -54.386577 -52.470534
[11,]   20 -46.319487    642214.1 -39.631738 -44.406577 -41.490534
Run Code Online (Sandbox Code Playgroud)

我现在要做的是将每列的值缩放为0到1的值.

我尝试使用 …

r scale

13
推荐指数
2
解决办法
3万
查看次数

R- 将某些列从 0 标准化为 1,其值等于 0

我最近开始使用 are,我想扩展我的数据矩阵。我在这里找到了一种方法来在两点之间缩放一个系列

x <- data.frame(step = c(1,2,3,4,5,6,7,8,9,10))
normalized <- (x-min(x))/(max(x)-min(x))
Run Code Online (Sandbox Code Playgroud)

由于我的数据由几列组成,因此我只想使用建议的函数对某些列进行规范化。

normalized <- function(x) (x- min(x))/(max(x) - min(x))
x[] <- lapply(x, normalized) 
Run Code Online (Sandbox Code Playgroud)

此外,我意识到我的数据集中的某些数据点等于 0,因此所提供的公式不再适用。我在这里添加了一个扩展建议:将r 数据帧缩放到 0-1 与 NA 值

normalized <- function(x, ...) {(x - min(x, ...)) / (max(x, ...) - min(x, ...))}
Run Code Online (Sandbox Code Playgroud)

但我不明白我必须如何编码。例如,我想让第 4、5、6 和 10 列标准化,但我想让其余的列保持在数据集中的状态?我在第 4 列中尝试过:

data <- lapply(data[,4],normalized,na.rm= TRUE)
Run Code Online (Sandbox Code Playgroud)

但它没有用(而不是数据框,结果是一个列表:-(...),有谁知道我如何解决它?

非常感谢!

r normalization

3
推荐指数
1
解决办法
1万
查看次数

使用不同范围的变量将变量从 0 标准化到 1?

我有一个像这样的数据框:

df <- data.frame(x1=c(1, 2, 3, 2, 1),
                 x2=c(1, 10, 5, 8, 3))
Run Code Online (Sandbox Code Playgroud)

我正在尝试将两个变量标准化为 0 和 1 之间。因此 2 英寸x1将是 0.5,5 英寸x2也将是 0.5。

我尝试过使用以下标准化函数:

range01 <- function(x){(x-min(x, na.rm = T))/(max(x, na.rm = T)-min(x, na.rm = T))}
df <- range01(df)
Run Code Online (Sandbox Code Playgroud)

相反,它通过整个数据帧的范围(1 到 10)对所有变量进行标准化,给出:

x1          x2
0.0000000   0.0000000           
0.1111111   1.0000000           
0.2222222   0.4444444           
0.1111111   0.7777778           
0.0000000   0.2222222
Run Code Online (Sandbox Code Playgroud)

如何根据两列各自的范围对它们进行标准化?我需要一个系统函数来执行此操作,因为我在 for 循环中处理多个数据帧中的许多变量。

r function normalization

1
推荐指数
1
解决办法
4272
查看次数

标签 统计

r ×5

normalization ×2

function ×1

scale ×1

scaling ×1