根据 R 中的一个因子对数值变量进行归一化
Normalizing numeric variable according to a factor in R
我正在尝试根据第二个变量(一个因子)规范化一个变量(使用最小值和最大值)。
以diamonds
数据帧为例会更清楚。
这会将 carat
变量标准化为 0-1 区间:
di <- diamonds
di$caratn <- (di$carat-min(di$carat))/(max(di$carat)-min(di$carat))
但我想根据 clarity
变量(这是一个因素)进行归一化。也就是说,取给定 clarity
的所有 carat
值并归一化 0-1。
结果是 clarity
SI2 中最高的 carat
值为 1,其他净度也是如此。
这是一个使用 ave()
的解决方案:
di <- within(di,caratn <- ave(carat,clarity,FUN=function(x) (x-min(x))/diff(range(x))))
我正在尝试根据第二个变量(一个因子)规范化一个变量(使用最小值和最大值)。
以diamonds
数据帧为例会更清楚。
这会将 carat
变量标准化为 0-1 区间:
di <- diamonds
di$caratn <- (di$carat-min(di$carat))/(max(di$carat)-min(di$carat))
但我想根据 clarity
变量(这是一个因素)进行归一化。也就是说,取给定 clarity
的所有 carat
值并归一化 0-1。
结果是 clarity
SI2 中最高的 carat
值为 1,其他净度也是如此。
这是一个使用 ave()
的解决方案:
di <- within(di,caratn <- ave(carat,clarity,FUN=function(x) (x-min(x))/diff(range(x))))