【问题标题】:R normalize dataframe column using maxR使用最大值规范化数据框列
【发布时间】:2015-03-03 14:53:17
【问题描述】:

R 新手。

我看过一些关于创建函数以根据标准偏差等对数据进行标准化的帖子。但我的问题有点不同。

我有一个大数据框。我想要一个。找到数据集中所有名称的平均值。湾。根据最大值对平均值进行归一化。样本数据:

df<- data.frame(name=c("lauren", "max", "lauren", "pat"), value=(1:4))

得到我的意思:

meanValue <-aggregate(value ~name, data=df, mean)

输出应该是:

df<- data.frame(name=c("lauren", "max", "pat"), normalizedMean=c(.5, .5, 1))

但我不知道如何获取最大值并在相应的 df 数据帧中创建一个新变量。我知道这是一个应用函数,但我怀疑聚合可以在这里组合。

【问题讨论】:

  • 如果您要使用随机值,您应该使用set.seed() 使您的示例可重现。此外,您应该为样本输入提供所需的输出。
  • 你不能只除以你的 meanValue 的 max() 吗? meanValue$value/max(meanValue$value) 可能是你想要的。
  • 在第二行代码之后,执行meanValue$normalizedMean &lt;- meanValue$value / max(meanValue$value)。你是这个意思吗?
  • “规范化”这个词迫切需要一个定义。大多数统计学家会认为这意味着“转换”或“缩放”到平均值为 0 和标准差为 1。当你的一半数据(具有单个元素的组)没有答案时,你怎么能指望任何人提供答案?标准差。
  • @RamNarasimhan 这正是我所需要的。比我想象的要简单!

标签: r max aggregate normalization apply


【解决方案1】:

我认为您发布的最终解决方案并不是完全标准化的值。它应该是 c(0,0,1)

df<- data.frame(name=c("lauren", "max", "lauren", "pat"), value=(1:4))

meanValue <-aggregate(value ~name, data=df, mean)

min_val<-min(meanValue$value)
max_val<-max(meanValue$value)
meanValue$normalizedMean<-(meanValue$value-min_val)/(max_val-min_val) #normalizing

meanValue 

【讨论】:

  • 我认为 OP 使用的规范化定义与您使用的不同......
  • 但是他的定义是什么,本?看起来像统计废话。
  • 他们只想将均值除以最大均值。这里没有足够的上下文来判断这是否合理。
【解决方案2】:

怎么样

df<- data.frame(name=df$name, 
   normalizedMean=meanValue$value/max(meanValue$value))

?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-27
    • 2014-07-07
    • 2020-07-09
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2021-04-05
    • 2017-01-12
    相关资源
    最近更新 更多