【问题标题】:Normalize data with its row mean in R用 R 中的行均值对数据进行归一化
【发布时间】:2013-06-19 15:44:16
【问题描述】:

在尝试将给定行中的每个元素除以该行的平均值后,我遇到了一些困难。一组虚拟数据:

set.seed(1)
x <- cbind(Plant = letters[1:5],
           as.data.frame(matrix(rnorm(60), ncol = 12)))
x

因此,对于植物 a,我希望 V1、V2...V12 除以该行的平均值。

我认为可以使用:

x/rowMeans(x)

但我得到了错误:

Error in rowMeans(x) : 'x' must be numeric

我认为这个错误是由于数据的格式,因为它是一个 data.frame 而不是一个向量。然而,我设法通过更改数据格式来计算每行的平均值:

library(data.table)
x.T <- as.data.table(x)
x.T[,list(Mean=rowMeans(.SD)), by=Plant]

从那里,我不知道该去哪里。我认为循环会起作用,但是进行一些搜索,我发现不建议这样做。因此,我希望获得每个样本植物的标准化数据。请问有什么建议吗?

【问题讨论】:

    标签: r row normalization


    【解决方案1】:

    第一个错误来自试图取包括Plant 变量/列在内的平均值,这是非数字的。试试:

    cbind(x$Plant, x[,-1]/rowMeans(x[,-1]))
    

    【讨论】:

      猜你喜欢
      • 2016-12-16
      • 2014-11-23
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 2016-03-09
      • 2021-07-30
      • 1970-01-01
      • 2016-02-16
      相关资源
      最近更新 更多