2014-11-28 5 views
-3

У меня есть значения log2ratio каждого положения хромосом (координаты 137221) для разных выборок (15 выборок). Я хочу рассчитать Zscore log2ratio для каждой позиции хромосом (строка). Также я хочу исключить первые три столбца, потому что он содержит идентификатор. Есть также некоторые NAs в между переменными ..Как рассчитать Zscore в R

Заранее благодарю

+0

см. Шкала для Z-оценка. –

+0

@Ben я попробовал scale..but erroe – Kryo

+0

@Kryo, возможно, вы могли бы разместить некоторые данные образца и код, который вы пробовали. Это было бы помочь ... –

ответ

0

Это не полностью ясно, что вы хотите. Если вы хотите Z-счет для всей строки (то есть, его средняя делится на стандартной ошибкой) для всех, кроме первых трех рядов, то

f <- function(x) { 
    mean(x,na.rm=TRUE)/(sd(x,na.rm=TRUE)*sqrt(length(na.omit(x)))) 
} 
apply(as.matrix(df[-(1:3),]),1,f) 

будет делать это. Это дает вам вектор, равный числу столбцов (минус 3).

Если вы хотите целые столбцы нормированных данных (Z-баллов), то я думаю, что

t(scale(t(as.matrix(df[-(1:3),])))) 

должен работать. Если ни один из них не работает, вам нужно опубликовать воспроизводимый пример - или, по крайней мере, точно указать, что такое сообщения об ошибках.

+0

извините за то, что я не понял. Я хочу рассчитать zscore для каждой строки. Я попытался использовать: for (idx in 1: nrow (df)) { this_row <- unlist (df [idx, 4:15, drop = T]) znorm_row <- (this_row - Finaltable [idx, 16)/Finaltable [idx, 17] }, но поскольку существует NA, он показывает ошибку .. – Kryo

+0

с использованием t (шкала (t (as.matrix (df [- (1: 3),])))) ...... ............. Ошибка в colMeans (x, na.rm = TRUE): 'x' должно быть числовым – Kryo

+0

, пожалуйста, покажите нам результаты 'str (df)'. –

Смежные вопросы