【发布时间】:2019-05-03 14:55:17
【问题描述】:
我有一个这样的数据框:
df <- data.frame(x1=c(1, 2, 3, 2, 1),
x2=c(1, 10, 5, 8, 3))
我正在尝试将这两个变量标准化为 0 和 1。因此,x1 中的 2 为 0.5,x2 中的 5 也为 0.5。
我尝试过使用以下归一化函数:
range01 <- function(x){(x-min(x, na.rm = T))/(max(x, na.rm = T)-min(x, na.rm = T))}
df <- range01(df)
但相反,它按整个数据框的范围(1 到 10)对所有变量进行归一化,给出:
x1 x2
0.0000000 0.0000000
0.1111111 1.0000000
0.2222222 0.4444444
0.1111111 0.7777778
0.0000000 0.2222222
如何按各自的范围对两列进行标准化?我需要一个系统函数来执行此操作,因为我在 for 循环中处理许多数据帧中的许多变量。
【问题讨论】:
标签: r function normalization