2017-02-15 18 views
1

Hy guys,Нормализация с использованием R

У меня есть таблица с 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 

Это ожидаемое таблица с процентами:

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 

И это финальный стол:

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). Это число, которое я хочу использовать для нормализации всех значений из всех выборок. Я знаю, что теория и первый шаг - рассчитать процент от каждого значения в столбце и после умножения на наименьшее значение.

Благодарим за помощь.

+0

Нормализуя, вы хотите, чтобы сумма всех итоговых столбцов была одинаковой? –

+0

Я хочу использовать значение наименьшей суммы столбца. –

ответ

1

вы можете использовать это:

генерировать данные

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