2017-10-19 72 views
0

我有這樣的數據框,如下面的代碼所示。我想要做的是打印樣本1(樣本1中任何樣本,可以是任何樣本之後)和樣本2(樣本2中的任何樣本,之後可以是任何字母)之間最顯着差異的5種蛋白質。 p值需要通過wilcoxon測試來計算。基於列名和計算p值的R子設置

我想對這些數據進行wilcoxon非參數檢驗,以計算p值,然後根據這個值計算出p值,然後用它來排序蛋白質。 我不確定如何根據樣本名稱對數據進行子集分類,無論接下來的字母如何,只要數字相同,就可以匹配1或2中的任意一個。我不知道該從哪裏開始代碼,以及如何將樣本1的數據正確地分組到一起,然後進行樣本2.

爲了使事情更清楚,我想對所有樣本1和樣本2分別進行wilcoxon測試。然後用這個p值打印出最顯着不同於彼此的5種蛋白質。

任何幫助將不勝感激,謝謝。

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) 

回答

0

首先,您發佈的數據是不正確的,在sample3b有價值觀與:而不是小數點矢量。此外,爲什麼字符?
您可以使用以下方法進行所有成對列測試。

# 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

對不起,我是R新手,忘了不需要製作人物,感謝您的幫助。 – Lentum