【问题标题】:Normalizing numeric variable according to a factor in R根据 R 中的一个因子对数值变量进行归一化
【发布时间】:2016-03-09 15:57:35
【问题描述】:

我正在尝试根据第二个变量(一个因子)来规范化一个变量(使用最小值和最大值)。

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,其他清晰度也是如此。

【问题讨论】:

    标签: r normalization


    【解决方案1】:

    这是使用ave()的解决方案:

    di <- within(di,caratn <- ave(carat,clarity,FUN=function(x) (x-min(x))/diff(range(x))))
    

    【讨论】:

    • 完美而简单!谢谢!
    猜你喜欢
    • 2019-01-13
    • 2021-02-28
    • 1970-01-01
    • 2021-11-14
    • 2016-12-16
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多