2016-12-20 4 views
0

У меня есть dataframe с пациентом данными/выживанием и с поиском данных экспрессии генов как этотПрименение функции для анализа выживаемости

# Patients event time Gene_1 ... Gene_100 
1 Patient_1 1 356 3455 ... 59393 
2 Patient_2 1 1233 6632 ... 43299 
3 Patient_3 0 1224 3636 ... 44222 
4 Patient_4 0 56 30603 ... 23999 
... 
100 Patient_100 1 853 ... 25888 

То, что я писал функцию, Подменят экспрессию генов данных каждого отдельного гена (например, Gene_1) в квартиль, а затем выбирать самую низкую и самую высокую квартиль для сравнения в анализе выживаемости:

library(dplyr); library(survival) 
quartile_function <- function(dataframe, column_x){ 
    dataframe$quartile <- ntile(dataframe[ ,column_x], 4) 
    dataframe <- subset(dataframe, quartile == 1 | quartile == 4) 
    group <- dataframe$quartile 
    coxph(Surv(time, event) ~ group, data=dataframe)[['coefficients']] 
} 

Тогда я сделать анализ Кокса пропорционального риска, где я заинтересован только в coef

Это все работает, когда я выбираю столбцы генов по столбцам, но я стараюсь применить эту функцию к каждому столбцу, содержащему данные экспрессии генов в кадре данных.

Любые идеи для этого более эффективно? И как я могу легко применить эту функцию к каждому столбцу с данными выражения Gen, чтобы получить общий обзор коэффа для каждого гена?

ответ

1

Если я правильно понимаю, вы хотите звонить quartile_function 100 раз и каждый раз, когда вы хотите передать на другой номер колонка = column_x

В этом случае должен работать

sapply(seq(a,b), function(x) quartile_function(df,x),simplify = T) 

, где а = номер столбца, соответствующий Gene_1, и b = номер столбца, соответствующий Gene_100

+0

Это сработало, спасибо! –