使用 R 规范化

Normalization using R

伙计们,

我有一个 table 有 1.350.000 行和 113 列(样本)。 我想要的是通过最小样本对我的所有数据进行归一化。

例如:

Org samp1   samp2   samp3   samp4   samp5   samp6
A   0.08    4.92    3.34    5.50    2.98    2.99
B   1.97    3.96    4.49    2.79    4.73    4.00
C   4.05    3.99    4.89    3.72    3.83    5.17
D   1.70    5.11    3.97    3.37    2.71    3.22

以及它们对应的总和。

Sum 7.80    17.98   16.69   15.38   14.26   15.37

这是预期的 table,百分比为:

Org samp1   samp2   samp3   samp4   samp5   samp6
A   0.01    0.27    0.20    0.36    0.21    0.19
B   0.25    0.22    0.27    0.18    0.33    0.26
C   0.52    0.22    0.29    0.24    0.27    0.34
D   0.22    0.28    0.24    0.22    0.19    0.21

这是最后的 table:

Org samp1   samp2   samp3   samp4   samp5   samp6
A   0.08    2.14    1.56    2.79    1.63    1.52
B   1.97    1.72    2.10    1.42    2.59    2.03
C   4.05    1.73    2.29    1.89    2.10    2.62
D   1.70    2.22    1.85    1.71    1.48    1.63

考虑最小的总和值 (samp1 = 7.80)。这是我想用来对所有样本的所有值进行归一化的数字。 我知道这个理论,第一步是计算列中每个值的百分比,然后乘以最小值。

感谢您的帮助。

你可以使用这个:

生成数据

str <- 'Org samp1   samp2   samp3   samp4   samp5   samp6
A   0.08    4.92    3.34    5.50    2.98    2.99
B   1.97    3.96    4.49    2.79    4.73    4.00
C   4.05    3.99    4.89    3.72    3.83    5.17
D   1.70    5.11    3.97    3.37    2.71    3.22'



file <- textConnection(str)
df <- read.table(file, header = T)

获取标准化总和值

step1 <- colSums(df[,-1])

step1/min(step1)

编辑:

重现您的示例结果:

step1 <- colSums(df[,-1])

round(df[,-1]/rep(step1,each=nrow(df)),2)

  samp1 samp2 samp3 samp4 samp5 samp6
1  0.01  0.27  0.20  0.36  0.21  0.19
2  0.25  0.22  0.27  0.18  0.33  0.26
3  0.52  0.22  0.29  0.24  0.27  0.34
4  0.22  0.28  0.24  0.22  0.19  0.21

round(df[,-1]/rep(step1,each=nrow(df)) * min(step1),2)

  samp1 samp2 samp3 samp4 samp5 samp6
1  0.08  2.13  1.56  2.79  1.63  1.52
2  1.97  1.72  2.10  1.41  2.59  2.03
3  4.05  1.73  2.29  1.89  2.10  2.62
4  1.70  2.22  1.86  1.71  1.48  1.63