2017-10-19 28 views
0

J'ai cette trame de données comme indiqué ci-dessous dans mon code. Ce que je veux faire est d'imprimer les 5 protéines avec la différence la plus significative entre l'échantillon 1 (N'importe lequel avec l'échantillon 1, peut être n'importe quelle lettre après) et l'échantillon 2 (N'importe quel échantillon 2, peut être n'importe quelle lettre après). La valeur p doit être calculée à partir d'un test de Wilcoxon. Je veux effectuer un test de Wilcoxon non-paramétrique sur ces données pour calculer une valeur de p que je veux ensuite utiliser pour commander les protéines, sur la base de cette valeur. Je ne suis pas sûr comment je peux sous-ensemble les données basées sur le nom de l'échantillon, correspondant à tout avec 1 ou 2 dans quelle que soit la lettre qui suit, tant que le nombre est le même. Je ne sais pas où commencer le code et comment même sous-ensemble les données correctement pour l'échantillon 1 ensemble, puis l'échantillon 2.Réglage du sous-ensemble basé sur les noms de colonne et calcul des valeurs p

Pour rendre les choses plus claires, je veux effectuer un test de wilcoxon sur tous les échantillons 1 et 2 séparément . Utilisez ensuite cette valeur p pour imprimer les 5 protéines les plus significativement différentes les unes des autres.

Toute aide serait grandement appréciée, merci.

protein<-c("COX4", "LJK2", "JJ2", "HK1", "3DFG", "JE3","LOP2","PQE8") 
    sample1a<-c(2.01, 1.58, 1.49,2.09, 2.11, 1.54, 1.39, 1.49) 
    sample1b<-c(2.04, 1.57, 1.47,2.04, 2.10, 1.51, 1.40, 1.49) 
    sample2a<-c(2.07, 1.52, 1.59,2.19, 1.41, 1.51, 1.36, 1.41) 
    sample2b<-c(2.01, 1.48, 1.43,2.04, 2.01, 1.44, 1.49, 1.53) 
    sample3a<-c(2.11, 1.48, 1.49,2.09, 2.11, 1.54, 1.39, 1.48) 
    sample3b<-c(2:21, 1.38, 1.29,2.39, 2.07, 1.59, 1.29, 1.38) 


df<-data.frame(protein,sample1a,sample1b,sample2a,sample2b, sample3a, sample3b) 

Répondre

0

Tout d'abord, vos données est affiché ne va pas, dans le vecteur sample3b vous avez des valeurs avec : au lieu d'un point décimal. D'ailleurs, pourquoi les personnages?
Vous pouvez effectuer tous les tests de colonnes par paires avec les éléments suivants.

# First convert to numeric 
df2 <- as.data.frame(sapply(df[-1], function(x) as.numeric(as.character(x)))) 

# Now define a function to be applied to pairs of columns 
fun <- function(x, y) wilcox.test(x, y, exact = FALSE)$p.value 
# apply the function above 
result <- sapply(df2, function(x) sapply(df2[-1], fun, x)) 

any(result < 0.05) # no p-value is significant 
#[1] FALSE 
+0

Désolé je suis nouveau à R et j'ai oublié de ne pas avoir besoin de faire des caractères, merci pour l'aide. – Lentum